【问题标题】:How to specify date format when using pandas.to_csv?使用 pandas.to_csv 时如何指定日期格式?
【发布时间】:2012-12-09 14:34:03
【问题描述】:

to_csv()的默认输出格式为:

12/14/2012  12:00:00 AM

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

20121214

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

20121214,  084530

文档太简短,无法为我提供有关如何执行这些操作的任何线索。有人可以帮忙吗?

【问题讨论】:

    标签: python pandas export-to-csv datetime-format date-formatting


    【解决方案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 中找到了%sStrftime doc for C here

      请注意,时间戳毫秒格式 %Q 不适用于 pandas(您将在字段中使用 %Q 而不是日期)。我用 python 3.6 和 pandas 0.24.1 刷了我的套装

      【讨论】:

      • 要导出毫秒或更精确的微秒,请使用%f 像这样df.to_csv(filename, date_format='%s.%f')
      猜你喜欢
      • 2015-07-26
      • 2013-07-11
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      相关资源
      最近更新 更多