簡體   English   中英

python中的df.to_csv格式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM