【问题标题】:Pandas to_datetime not formatting as expectedPandas to_datetime 未按预期格式化
【发布时间】:2018-10-06 17:41:01
【问题描述】:

我有一个数据框,其中有一列“日期”,数据类型为 datetime64。这些值采用 YYYY-MM-DD 格式。 如何将其转换为 YYYY-MM 格式并将其用作 datetime64 对象本身。 我尝试将我的 datetime 对象转换为 YYYY-MM 格式的字符串,然后再转换回 YYYY-MM 格式的 datetime 对象,但它不起作用。

原始数据 = 1988-01-01。

将数据时间对象转换为YY-MM格式的字符串

df['Date']=df['Date'].dt.strftime('%Y-%m')

这按预期工作,我的列值变成了

1988-01

将字符串转换回 Y-m 格式的日期时间对象

df['Date']=pd.to_datetime(df['Date'],format= '%Y-%m')

我期待 YYYY-MM 格式的日期列,但它变成了 YYYY-MM-DD 格式。

1988-01-01

如果我遗漏了什么,请告诉我。

谢谢

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    它是expected behaviour,在日期时间中需要年、月和日参数。

    如果想删除days需要to_period的月份:

    df['Date'] = df['Date'].dt.to_period('M')
    

    df['Date'] = pd.to_datetime(df['Date'],format= '%Y-%m').dt.to_period('M')
    

    示例:

    df = pd.DataFrame({'Date':pd.to_datetime(['1988-01-01','1999-01-15'])})
    print (df)
            Date
    0 1988-01-01
    1 1999-01-15
    
    df['Date'] = df['Date'].dt.to_period('M')
    print (df)
         Date
    0 1988-01
    1 1999-01
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-06
      • 2019-03-01
      • 2020-08-15
      • 2016-04-03
      • 2023-02-10
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      相关资源
      最近更新 更多