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

45 python pandas

默认输出格式to_csv()为:

12/14/2012  12:00:00 AM
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何仅输出具有特定格式的日期部分:

20121214
Run Code Online (Sandbox Code Playgroud)

或csv文件中两个单独列中的日期和时间:

20121214,  084530
Run Code Online (Sandbox Code Playgroud)

文档太简短了,不能给我任何关于如何做这些的线索.有人可以帮忙吗?

joe*_*otz 98

使用新版本的Pandas,您可以使用to_csv方法的date_format参数:

df.to_csv(filename, date_format='%Y%m%d')
Run Code Online (Sandbox Code Playgroud)

  • 是但有没有办法使用不同的格式存储两个不同的Timestamp列?我可以先将它们转换为字符串然后保存,但是有更优雅的东西吗? (6认同)
  • 请不要使用"使用新版本"之类的短语.而是使用"版本X.XX.XX以后".否则,您的贡献将在发布几个月后过时. (5认同)
  • 不适合我。我正在尝试保存此“%Y-%m-%d”。当我打开一个文件时,它被保存为 %Y/%m%d。 (5认同)

And*_*den 35

您可以使用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'))
Run Code Online (Sandbox Code Playgroud)

然后具体说明要导出到csv的列:

df[['date', 'time', ... ]].to_csv('df.csv')
Run Code Online (Sandbox Code Playgroud)


Ben*_*ier 6

要导出为时间戳,请执行以下操作:

df.to_csv(filename, date_format='%s')
Run Code Online (Sandbox Code Playgroud)

%s格式未记录在 python/pandas 中,但在这种情况下有效。

%sruby 的日期格式中找到了。此处为 C 的 Strftime 文档

请注意,时间戳毫秒格式%Q不适用于熊猫(您将%Q在字段中使用文字而不是日期)。我用 python 3.6 和 pandas 0.24.1 处理了我的集合