-2
我有一個熊貓數據框,其中有包含日期的列。熊貓發現日期以外的值
我需要確保沒有別的,但日期包含在這些列中。有沒有人有任何建議如何做到這一點? 我想過簡單地找到哪些行包含日期以外的類型的數據 - 雖然我不知道如何對其進行編碼。
任何幫助,將不勝感激!
我有一個熊貓數據框,其中有包含日期的列。熊貓發現日期以外的值
我需要確保沒有別的,但日期包含在這些列中。有沒有人有任何建議如何做到這一點? 我想過簡單地找到哪些行包含日期以外的類型的數據 - 雖然我不知道如何對其進行編碼。
任何幫助,將不勝感激!
如果數據未包含NaN
S或None
的價值觀,需要檢查是否所有的字符串衣被合計可轉換爲datetime
使用apply
與to_datetime
和參數errors='coerce'
,如果某個值無法解析什麼回報NaT
。因此,然後用all
添加notnull
的面具,並選擇與loc
:
df = pd.DataFrame({'a':['2015-02-04','2015-02-05','2015-02-06'],
'b':['2015-02-06','2015-02-06', 'u'],
'c':['2015-01-01','d','2015-02-06']})
print (df)
a b c
0 2015-02-04 2015-02-06 2015-01-01
1 2015-02-05 2015-02-06 d
2 2015-02-06 u 2015-02-06
cols = ['a','b','c']
mask = df[cols].apply(pd.to_datetime, errors='coerce').notnull().all()
print (mask)
a True
b False
c False
dtype: bool
print (df.loc[:, mask])
a
0 2015-02-04
1 2015-02-05
2 2015-02-06
或者,如果需要檢查,如果一些列有已經dtype
datetime
使用DataFrame.select_dtypes
:
df['a'] = pd.to_datetime(df['a'])
print (df)
a b c
0 2015-02-04 2015-02-06 2015-01-01
1 2015-02-05 2015-02-06 d
2 2015-02-06 u 2015-02-06
print (df.dtypes)
a datetime64[ns]
b object
c object
dtype: object
print (df.select_dtypes(include=['datetime']))
a
0 2015-02-04
1 2015-02-05
2 2015-02-06
爲什麼你就不能嘗試轉換元素轉換成日期對象,如果失敗,則會損壞數據。 –
這將有助於看到你認爲什麼是有效日期的例子,除了你可以做'df ['Date'] = pd.to_datetime(errors ='coerce')',然後調用'df .dropna()'因爲任何無效的日期字符串將被轉換爲'NaT' – EdChum