2017-02-19 6 views
5

私は巨大なDataFrameを持っているので、列が順調ではなく、その名前も知りません。pandasを使用してdatetime型のすべての列を取得しますか?

datetime型のすべての列を見つけるにはどうすればよいですか?

オンラインのほとんどのソリューションでは、ポスターがカラムの名前を知っているので、私は少し問題があります。このような状況で私は何ができますか?

+0

何_else_を持っていますか?他のタイプ? 'NaN'?いくつかのサンプルデータを追加できますか? – miradulo

+0

私は100以上の列を持ち、いくつかの列はint型であり、いくつかはブール型であり、いくつかは英数字型です。 datetime列にNaNはありません。 (彼らのうちの2つしかない、私はちょうどそれらの誰かを取得したい)。 NaNがないと仮定しよう。私は10以上のデータセットのサンプルでは見つかりませんでした。 –

答えて

7

pandas.DataFrame.select_dtypes()を使用し、datetime64タイプのみを含めることができます。

df.select_dtypes(include=['datetime64']) 

デモ

>>> df 
     dts1  dts2 ints 
0 2012-01-01 2004-01-01  0 
1 2012-01-02 2004-01-02  1 
2 2012-01-03 2004-01-03  2 
..  ...  ... ... 
97 2012-04-07 2004-04-07 97 
98 2012-04-08 2004-04-08 98 
99 2012-04-09 2004-04-09 99 

>>> df.select_dtypes(include=['datetime64']) 
     dts1  dts2 
0 2012-01-01 2004-01-01 
1 2012-01-02 2004-01-02 
2 2012-01-03 2004-01-03 
..  ...  ... 
97 2012-04-07 2004-04-07 
98 2012-04-08 2004-04-08 
99 2012-04-09 2004-04-09 
0

パンダのデータフレームの各列がパンダシリーズであるので、単純に(典型的には、datetime64 [NS]列名のリストを反復処理と条件付き日時のseries.dtypeを確認):

for col in df.columns: 
    if df[col].dtype == 'datetime64[ns]': 
     print(col) 

またはリストの理解として:

[col for col in df.columns if df[col].dtype == 'datetime64[ns]'] 

または直列フィルタとして:列は

df.dtypes[df.dtypes=='datetime64[ns]'] 
関連する問題