ValueError: time data '27th August 2017 23:32:58' does not match format '%d-%m-%Y %H:%M:%S' (match)

ValueError: time data '27th August 2017 23:32:58' does not match format '%d-%m-%Y %H:%M:%S' (match)

我正在使用 pandas 和 odo 将 csv 文件导入数据库,文件中有一个日期字段采用这种格式 27th August 2017 23:06:25 我想将其转换为这种格式 %d-%m-%Y %H:%M:%S.

这是我正在使用的代码片段:

df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y %H:%M:%S')

我遇到了错误

ValueError: time data '27th August 2017 23:32:58' does not match format '%d-%m-%Y %H:%M:%S' (match)

有人有解决这个问题的想法吗?请

pandas 可以在没有格式说明符的情况下很好地解析:

In[25]:
pd.to_datetime('27th August 2017 23:32:58')

Out[25]: Timestamp('2017-08-27 23:32:58')

所以你不需要为这个例子说明格式

这里的另一点是,即使您尝试过类似的操作:

In[28]:
pd.to_datetime('27th August 2017 23:32:58', format='%dth %B %Y %H:%M:%S')

Out[28]: Timestamp('2017-08-27 23:32:58')

对于像这样的日期字符串,它会失败:

'3rd June 2011 12:11:23'

由于 'rd',您无法使用 to_datetime 传递格式来处理日期格式,请参阅 python strptime 参考。您需要将它们去掉才能使其正常工作,但 pandas 足以 man/woman 嗅探格式,因此不需要