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

Python 为什么时间数据与格式不匹配?,python,pandas,datetime,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”不匹配 错误中显示的日期是数据帧中的第一个日期,因此它根本

我有一个带有字符串的数据框,我正在将其转换为日期时间。它们看起来都像“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
,它工作正常,但现在使用秒数就不行了。

您的格式字符串不工作,因为您的格式在需要
Y
的地方使用了
Y
。但是为了营救熊猫,它通常可以使用
infere\u datetime\u format
参数来
pandas.to\u 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
测试代码:

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
结果:

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

看看这张表:@JacobIRR评论的要点似乎是:仔细阅读
%Y
的真正含义。请注意,这与
%y
不同。我现在看到了问题,我的两列包含秒,而其余列不包含秒。谢谢,这是可行的,但您知道为什么指定格式不起作用吗?另外,推断格式是否会使它慢一点?不,它与前导零无关。Python的日期格式可以处理缺少前导零的情况。这与OP没有给出正确的格式有关。这正是错误消息所说的。