我正在尝试将字符串转换为python中“ datetime”的类型。我的数据符合格式,但仍然 'ValueError:时间数据11 11与指定的格式不匹配' 我不确定错误中的“ 11 11”来自哪里。
我的代码是
train_df['date_captured1'] = pd.to_datetime(train_df['date_captured'], format="%Y-%m-%d %H:%M:%S")
数据头是
print (train_df.date_captured.head())
0 2011-05-13 23:43:18
1 2012-03-17 03:48:44
2 2014-05-11 11:56:46
3 2013-10-06 02:00:00
4 2011-07-12 13:11:16
Name: date_captured, dtype: object
我通过选择第一个字符串并以相同的日期时间格式运行代码来尝试以下操作。它们都可以正常工作。
dt=train_df['date_captured']
dt1=dt[0]
date = datetime.datetime.strptime(dt1, "%Y-%m-%d %H:%M:%S")
print(date)
2011-05-13 23:43:18
和
dt1=pd.to_datetime(dt1, format='%Y-%m-%d %H:%M:%S')
print (dt1)
2011-05-13 23:43:18
但是为什么我在pd.to_datetime中使用相同的格式来转换列中的所有数据,却出现了上面的错误? 谢谢。
答案 0 :(得分:0)
我解决了。
train_df['date_time'] = pd.to_datetime(train_df['date_captured'], errors='coerce')
print (train_df[train_df.date_time.isnull()])
我在100372行中发现,date_captured值为'11 11'
category_id date_captured ... height date_time
100372 10 11 11 ... 747 NaT
因此,带有errors='coerce'
的代码将用NaN替换无效的解析。
谢谢。