2017-06-20 12 views
-2

私は日付を含む列を持つパンダのデータフレームを持っています。パンダが日付以外の値を見つける

これらの列に日付が含まれていることを確認する必要があります。誰にどのようにこれを行うにはアドバイスを持っていますか? 私は単純に、日付以外のデータ型を含む行を見つけることを考えましたが、これをコード化する方法はわかりません。

助けていただけたら幸いです!

+0

なぜあなただ​​けの要素を変換しようとすることはできませんが失敗した場合はデータが破損しています。 –

+0

あなたは 'df ['Date'] = pd.to_datetime(errors = 'coerce')'を実行することができるだけでなく、有効な日付と思われるものの例を見て、 .dropna() 'は無効な日付文字列として' NaT 'に変換されます。 – EdChum

答えて

0

データがないNaN秒またはNone sの値が含まれており、すべての文字列valusがto_datetimeと、いくつかの値を解析できない場合はどのようなリターンNaTパラメータerrors='coerce'datetime使用applyに変換できるかどうかを確認する必要が場合。それではマスクにallnotnullを追加し、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 

場合や、いくつかの列がすでにdtypedatetime使用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 
関連する問題