为什么时间数据与格式不匹配?

时间:2017-04-10 18:12:46

标签: python pandas datetime

我有一个包含字符串的数据框,我将其转换为日期时间。他们看起来都像" 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,其工作正常,但现在只有几秒钟就没有。

1 个答案:

答案 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