首页 > 解决方案 > Pandas to_datetime 未按预期格式化

问题描述

我有一个数据框,其中有一列“日期”,数据类型为 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

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

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

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

1988-01-01

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

谢谢

标签: pythonpandasdatetime

解决方案


这是预期的行为,在日期时间中需要年、月和日参数。

如果想通过以下方式删除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

推荐阅读