我有一个pandas数据框,它的列类型为int64,但此列会重新设置日期,例如20180501.我想将此列转换为日期时间,并且具有以下代码,但它返回错误消息
df['new_date'] = pd.to_datetime(df['old_date'].astype('str'), format = '%y%m%d')
我收到以下错误消息
ValueError: unconverted data remains: 0501
如何修复我的代码?
答案 0 :(得分:4)
您需要使用大写字母Y
。有关完整参考,请参见Python's strftime directives。
df = pd.DataFrame({'old_date': [20180501, 20181230, 20181001]})
df['new_date'] = pd.to_datetime(df['old_date'].astype(str), format='%Y%m%d')
print(df)
old_date new_date
0 20180501 2018-05-01
1 20181230 2018-12-30
2 20181001 2018-10-01
答案 1 :(得分:0)
问题可能是由于数据帧中某些位置的格式错误引起的。
您可以尝试设置参数errors =“ =” coerce“以避免转换这些条目并将其设置为NaT。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html