使用pandas.to_csv时如何指定日期格式?

79
< p > to_csv() 的默认输出格式为:

12/14/2012  12:00:00 AM

我不知道如何以特定的格式仅输出日期部分:

20121214

或将日期和时间分别放在CSV文件的两个不同列中:

20121214,  084530

文档太简洁了,没有给我任何线索告诉我如何做这些事情。有人能帮忙吗?

3个回答

173

8
是的,有没有一种方法可以使用不同的格式存储两个不同的时间戳列?我可以先将它们转换为字符串,然后保存,但是否有更优雅的方法? - Pierre D
如果我在date_format中使用%s,我不知道为什么时间戳会比日期时间值早5小时30分钟,我的数据框中的日期时间值已经是UTC时间了,我该如何在写入CSV时将2018-06-28 12:15:00+00:00转换为Unix纪元? - PirateApp
4
对我没有用。我正在尝试保存这个日期格式'%Y-%m-%d'。但是,当我打开一个文件时,它被保存为'%Y/%m%d'。 - Nguai al
@PierreD 参考这里,考虑使用stylerto_string函数。 - davetapley

45

您可以使用strftime将它们保存为单独的列:

df['date'] = df['datetime'].apply(lambda x: x.strftime('%d%m%Y'))
df['time'] = df['datetime'].apply(lambda x: x.strftime('%H%M%S'))

然后具体说明要导出哪些列到CSV文件中:

df[['date', 'time', ... ]].to_csv('df.csv')

9
要将其导出为时间戳,请执行以下操作:
df.to_csv(filename, date_format='%s')

%s 格式在Python/Pandas中未被记录,但在此案例中可用。

我是从Ruby的日期格式中发现了%s。可以查看C中的Strftime文档。

请注意,时间戳毫秒格式%Q不适用于Pandas(字段中会出现字面值%Q而不是日期)。我使用的是Python 3.6和Pandas 0.24.1版本。


要导出毫秒或更精确的微秒,可以使用%f,像这样:df.to_csv(filename, date_format ='%s.%f') - maechler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接