使用 pandas.to_csv 时如何指定日期格式?
Posted
技术标签:
【中文标题】使用 pandas.to_csv 时如何指定日期格式?【英文标题】:How to specify date format when using pandas.to_csv? 【发布时间】:2012-12-09 14:34:03 【问题描述】:to_csv()
的默认输出格式为:
12/14/2012 12:00:00 AM
我不知道如何只输出特定格式的日期部分:
20121214
或 csv 文件中两个单独列中的日期和时间:
20121214, 084530
文档太简短,无法为我提供有关如何执行这些操作的任何线索。有人可以帮忙吗?
【问题讨论】:
【参考方案1】:从 Pandas 的 v0.13.0 (January 3, 2014) 版本开始,您可以使用 to_csv 方法的 date_format
参数:
df.to_csv(filename, date_format='%Y%m%d')
【讨论】:
是的,但是有没有办法使用不同的格式存储两个不同的时间戳列?我可以先将它们转换为字符串,然后保存,但是有什么更优雅的吗? 点赞!如果我将 %s 用于 date_format 我不知道为什么时间戳比日期时间值晚 5 小时 30 分钟,我在数据框中的日期时间值已经是 UTC,我该如何转换 2018-06-28 12:15:00+ 00:00 写入 csv 时到 unix 纪元 对我不起作用。我正在尝试保存这个 '%Y-%m-%d'。 W当我打开一个文件时,它被保存为 %Y/%m%d。【参考方案2】:您可以使用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')
【讨论】:
【参考方案3】:要导出为时间戳,请执行以下操作:
df.to_csv(filename, date_format='%s')
%s
格式是 not documented in python/pandas,但在这种情况下有效。
我从the dates formats of ruby 中找到了%s
。 Strftime doc for C here
请注意,时间戳毫秒格式 %Q
不适用于 pandas(您将在字段中使用 %Q
而不是日期)。我用 python 3.6 和 pandas 0.24.1 刷了我的套装
【讨论】:
要导出毫秒或更精确的微秒,请使用%f
像这样df.to_csv(filename, date_format='%s.%f')
以上是关于使用 pandas.to_csv 时如何指定日期格式?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 pandas to_csv() 中设置自定义分隔符?