編輯的所有要素:這裏是第一行:優化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確保函數不考慮日期,這些日期位於數據框的第一列。
問題是,雖然函數完全符合我的要求,但大約需要1分鐘來覆蓋10行,因此轉換我的csv需要少於60小時。我意識到這遠沒有被優化,但我掙扎着,未能找到適合我需求和(稀缺)技能的方式。
csv中的分隔符是什麼?例如,如果它不是逗號,那麼以下代碼將工作:'pd.read_csv(your_file,thousands ='。',decimal =',',sep = some_separator)' – EdChum
還包括問題中的第一個5-6行文件,你正試圖構建的DF的格式。 – MYGz
我已經嘗試過,它不起作用,','仍然存在,因此我以後無法將它轉換爲浮動。 –