【问题标题】:How to specify date format when using pandas.to_csv to YYYY-MM-DD?使用 pandas.to_csv 到 YYYY-MM-DD 时如何指定日期格式?
【发布时间】:2015-07-26 13:47:32
【问题描述】:

this post 的 OP 强调了在 pandas 中使用 date_format 参数的文档不足。我想在使用 to_csv 命令时将数据格式化为 YYYY-MM-DD,而不是 MM/DD/YYYY。

我试过了:frame.to_csv(output_dir, index=False, encoding='utf-8', date_format='%Y-%m-%d') 但它不起作用,其中 frame 是一个 DataFrame

可以找到我要转换的文件here

【问题讨论】:

    标签: python date pandas


    【解决方案1】:

    您可以使用标准的日期时间字符串格式化行为,这里是: df.to_csv('df.csv, date_format="%Y-%m-%d") https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

    编辑:不要使用 strftime 遍历数据帧,这是高度未优化的,并且已经有一个内置函数可以执行您想要的操作

    【讨论】:

    • 我试过了,不幸的是它不起作用(%Y-%m-%d)
    • 那是因为它是 ("%Y-%m-%d") 而不是 (%Y-%m-%d)
    • frame.to_csv(output_dir, index=False, encoding='utf-8', date_format="%Y-%m-%d") 不起作用
    • 我刚刚确认这行得通。之后你如何打开csv?如果您尝试在 excel 或类似文件中查看 csv,日期显示会有所不同,请确保您在文本编辑器中进行验证。
    • 谢谢,我没有意识到这一点!您知道为什么“付费”列不是 datetime64 吗?我应该手动更改吗?
    【解决方案2】:

    您显示迭代 csv' 行并获取每个 date 并使用日期时间中的 strptime 方法对其进行格式化。

    【讨论】:

      【解决方案3】:

      这已经在to_csv 中作为参数date_format 支持:

      t="""date,val
      12/05/1984,sadas
      1/11/1980,sadas
      2/4/1945,sadas
      22/10/1921,sadas"""
      df = pd.read_csv(io.StringIO(t), parse_dates=[0])
      df.to_csv(r'c:\data\date.csv', date_format='%Y-%m-%d')
      

      产量:

      ,date,val
      0,1984-12-05,sadas
      1,1980-01-11,sadas
      2,1945-02-04,sadas
      3,1921-10-22,sadas
      

      格式字符串的格式取自strftime

      【讨论】:

      • 我试过了,不幸的是它不起作用(%Y-%m-%d)
      • 你用的是什么版本的熊猫?这在0.16.0 中工作正常@
      • 您的日期是否已经是 datetime dtype 了?发布来自df.info() 的输出
      • 好吧,唯一的解释是它们是字符串而不是日期时间,请先尝试转换:df['date'] = pd.to_datetime(df['date'])
      • 当我使用 df.info() 时,我发现即使是被视为 datetime64[ns] 的列也没有转换为所需的格式。
      猜你喜欢
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 2020-10-29
      相关资源
      最近更新 更多