Python Pandas调试to_datetime

时间:2016-09-23 09:01:05

标签: python string datetime debugging pandas

我的数据框中有数百万条数据记录。我必须将字符串列转换为datetime。我这样做:

allData['Col1'] = pd.to_datetime(allData['Col1'])

但是有些字符串不是有效的日期时间字符串,因此我得到一个值错误。我不擅长Python中的调试,所以我很难找到一些数据项不可转换的原因。

我需要Python向我显示行号,以及不可转换的值,而不是抛出一个无用的错误,告诉我什么都没有。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用boolean indexing条件,isnull创建to_datetimeNaTerrors='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;