我有一个包含字符串的数据框,我将其转换为日期时间。他们看起来都像" 12/20/17 5:45:30" (月/日/年小时:分:秒)。这是我的代码:
for col in cols:
df[col] = pd.to_datetime(df[col], format='%m/%d/%Y %H:%M:%S')
但是我收到以下错误:
ValueError:时间数据' 4/19/16 1:05:30'不符合格式'%m /%d /%Y%H:%M:%S'
错误中显示的日期是数据框中的第一个日期,因此根本不起作用。有人可以解释我的datetime
格式有什么问题吗? datetime
如何与格式不匹配?顺便说一句,在我使用没有秒数的文件执行此操作之前,我的格式为%m/%d/%Y %H:%M
,其工作正常,但现在只有几秒钟就没有。
答案 0 :(得分:4)
您的格式字符串无法正常工作,因为您的格式使用的Y
需要y
。但是救援的大熊猫,通常可以使用infer_datetime_format
参数pandas.to_datetime()
<强>代码:强>
df[col] = pd.to_datetime(df[col], infer_datetime_format=True)
测试代码:
df = pd.DataFrame(["12/20/17 5:45:30", "4/19/16 1:05:30"], columns=['date'])
print(df)
for col in df.columns:
df[col] = pd.to_datetime(df[col], infer_datetime_format=True)
print(df)
<强>结果:强>
date
0 12/20/17 5:45:30
1 4/19/16 1:05:30
date
0 2017-12-20 05:45:30
1 2016-04-19 01:05:30