EDITのすべての要素に適用される:ここでの最初の行は、次のとおりです。aはDF
df = pd.read_csv(os.path.join(path, file), dtype = str,delimiter = ';',error_bad_lines=False, nrows=50)
df["CALDAY"] = df["CALDAY"].apply(lambda x:dt.datetime.strptime(x,'%d/%m/%Y'))
df = df.fillna(0)
私は1500の列と35000行を持つCSVファイルを持っています。それは値を含んでいますが、例えば1.700,35のような形式で、Pythonでは1700.35が必要です。私がcsvを読むと、すべての値はstr型の下にあります。この問題を解決するには
私はこの機能を書いた:
def format_nombre(df):
for i in range(length):
for j in range(width):
element = df.iloc[i,j]
if (type(element) != type(df.iloc[1,0])):
a = df.iloc[i,j].replace(".","")
b = float(a.replace(",","."))
df.iloc[i,j] = b
は基本的に、私はすべての行と列の各交差点を選択し、私は問題の文字を置き換え、私はフロートに要素をオンにし、私はそれを置き換えますデータフレーム。 ifは、関数がデータフレームの最初の列にある日付を考慮しないことを保証します。
問題は、機能が正確に何をしても、10行をカバーするのに約1分かかるため、CSVを変換するのに60時間弱かかります。
私はこれが最適化されていないことを認識していますが、私は苦労して自分のニーズと(希少な)スキルに合った方法を見つけられませんでした。どの程度
あなたのcsvの区切り記号とは何ですか?たとえば、カンマではない場合は、次のようになります。 'pd.read_csv(your_file、thousands = '。'、decimal = '、' sep = some_separator)' – EdChum
質問の最初の5-6行を構築しようとしているDFの形式。 – MYGz
私はすでに試してみましたが動作しません。 '、'は残っているので、後でそれをフロートに変換することはできません。 –