您可以使用boolean indexing
與條件,其中由isnull
檢查NaT
值創建to_datetime
與參數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
出於某種原因,如果一個錯誤被檢測到,整列被製成NaT。有任何想法嗎? ALLDATA [ 'GPS_DateTime'] = pd.to_datetime(ALLDATA [ 'GPS_DateTime'],錯誤= '要挾') errordata子= ALLDATA [ALLDATA [ 'GPS_DateTime']。ISNULL()] – user1035217
我認爲你需要將其交換:'errorData = allData [allData ['GPS_DateTime']。isnull()]'僅用於檢查,所以首先檢查它,然後通過'allData ['GPS_DateTime'] = pd.to_datetime(allData ['GPS_DateTime' ],error ='coerce')' – jezrael
allData ['GPS_DateTime'] = pd.to_datetime(allData ['GPS_DateTime'],errors ='coerce')給出了整列NaT – user1035217