如何阻止 to_csv 更改日期格式?

How to stop to_csv from changing date format?

我正在尝试将我的数据框按原样写入 csv。数据框的几列是日期时间。

我已经使用 df.column = pd.to_date(df.column) 将日期从 dd/mm/yyyy 转换为 yyyy/mm/dd,这很成功。

然而,当我将数据帧写入 csv 时,日期列恢复为 dd/mm/yyyy 格式。

这是我写入 csv 的方式,df.to_csv('~/Desktop/df.csv',date_format='%Y-%m-%d')

如何防止日期恢复为旧格式?

pandas version 0.23
python 3.6 - anaconda spyder

编辑:

这就是我阅读 csv 的方式:

df = pd.read_csv('~/Downloads/sample.csv.gz',parse_dates=True, delimiter='\t', compression = 'gzip')

根据你写的内容,这听起来很奇怪。您是否可以创建数据框的副本并且不将日期格式应用于其列?

否则,为了安全起见,我会尝试在使用您喜欢的格式编写 df 之前创建一个字符串列。

下面的代码将带有日期列的数据框保存为 csv。 (Jupyter Notebook 5.0.0, Python 3.6.6)

导入库

import pandas as pd
import numpy as np
import datetime as datetime

创建示例数据框

x = ['01/12/2018','01/12/2018','01/12/2018','01/12/2018']
y = ['A','B','C','D']
df = pd.DataFrame({'date':x, 'var':y})
df['date'] = pd.to_datetime(df['date'])
df

注意:此处,pd.to_datetime() 格式将其更改为 yyyy-mm-dd

转换为所需格式

df['date'] = df['date'].dt.strftime('%Y/%m/%d')
df

将数据帧保存为 csv

df.to_csv('df.csv', sep=',',index=False)

正在文本编辑器中打开文件

在 MS 中打开文件 Excel 可能需要更改列格式,如下所示