我的数据框中有数百万条数据记录。我必须将字符串列转换为datetime。我这样做:
allData['Col1'] = pd.to_datetime(allData['Col1'])
但是有些字符串不是有效的日期时间字符串,因此我得到一个值错误。我不擅长Python中的调试,所以我很难找到一些数据项不可转换的原因。
我需要Python向我显示行号,以及不可转换的值,而不是抛出一个无用的错误,告诉我什么都没有。我怎样才能做到这一点?
答案 0 :(得分:2)
您可以使用boolean indexing
条件,isnull
创建to_datetime
的NaT
值errors='coerce'
,参数NaT
- 创建allData1 = allData[pd.to_datetime(allData['Col1'], errors='coerce').isnull()]
无效的日期时间:
allData = pd.DataFrame({'Col1':['2015-01-03','a','2016-05-08'],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (allData)
B C Col1 D E F
0 4 7 2015-01-03 1 5 7
1 5 8 a 3 3 4
2 6 9 2016-05-08 5 6 3
print (pd.to_datetime(allData['Col1'], errors='coerce'))
0 2015-01-03
1 NaT
2 2016-05-08
Name: Col1, dtype: datetime64[ns]
print (pd.to_datetime(allData['Col1'], errors='coerce').isnull())
0 False
1 True
2 False
Name: Col1, dtype: bool
allData1 = allData[pd.to_datetime(allData['Col1'], errors='coerce').isnull()]
print (allData1)
B C Col1 D E F
1 5 8 a 3 3 4
样品:
wp_redirect(home_url());
exit;