[英]df.to_csv formatting in python
我有一些浮點數據類型列和 2 個日期類型列的數據框。示例
I J P V
1.2 11 2011-12-03 2015-08-07 19:14:07
1.0 18 2011-12-03 2015-08-07 19:14:07
1.8 21 2011-12-03 2015-08-07 19:14:07
現在我希望 I 和 J col 應該格式化為 .4f(小數點后 4 位)。所以 1.2 應該反映為 1.2000,在 J col 18 中應該反映為 18.0000。 對於 P 和 YYYY-MM-DD HH:MM:SS,日期字段的格式應為 YYYY-MM-DD。
是的,它在 dateframe 中看起來不錯..我將 I & J 列格式化為
df['I'] = ['%.4f'%x for x in df['I']]
df['J'] = ['%.4f'%x for x in df['J']]
## 1.2000, 11.0000 # fine
然后嘗試給出一個 csv 輸出,但在這又 1.2000 反映為 1.2 和 11.0000 為 11,,,, 並且日期分別變為 03/12/2011,07/08/2015 19:14:07 中的第一行日期值數據框。
這不符合要求(小數點后 4 位,日期為 YYYY_MM_DD)。
我試着做
df['P'] = [x.strftime('%Y-%m-%d') for x in df['P']]
df['V'] = [x.strftime('%Y-%m-%d %H:%M:%S') for x in df['V']]
#Then from doc and google tried doing
df.to_csv('D:/New.csv',date_format='%Y-%m-%d %H:%M:%S',index=False) ### not worked
df.to_csv('D:/changed_2.csv',float_format='string',date_format='%Y-%m-%d %H:%M:%S',index=False) ###Also not Working
請建議我如何提供具有此要求的 csv 文件。
我認為您可以首先通過astype
將列J
轉換為float
,然后通過strftime
將列P
轉換為字符串,最后將參數float_format
添加到to_csv
:
print df
I J P V
0 1.2 11 2011-12-03 2015-08-07 19:14:07
1 1.0 18 2011-12-03 2015-08-07 19:14:07
2 1.8 21 2011-12-03 2015-08-07 19:14:07
print df.dtypes
I float64
J int64
P datetime64[ns]
V datetime64[ns]
dtype: object
df['J'] = df['J'].astype(float)
df['P'] = df['P'].dt.strftime('%Y-%m-%d')
print df
I J P V
0 1.2 11.0 2011-12-03 2015-08-07 19:14:07
1 1.0 18.0 2011-12-03 2015-08-07 19:14:07
2 1.8 21.0 2011-12-03 2015-08-07 19:14:07
print df.to_csv(index=False,float_format='%.4f')
I,J,P,V
1.2000,11.0000,2011-12-03,2015-08-07 19:14:07
1.0000,18.0000,2011-12-03,2015-08-07 19:14:07
1.8000,21.0000,2011-12-03,2015-08-07 19:14:07
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.