2017-02-19 23 views
5

我有一個巨大的數據框,列沒有按順序,我也不知道他們的名字。使用熊貓獲取所有具有日期時間類型的列?

我該怎麼做才能找到所有的日期時間類型的列?

大多數在線解決方案,海報知道列的名稱,所以我有點麻煩,因爲我沒有。在這種情況下我能做些什麼?

+0

什麼_else_做的列有哪些?其他類型? 'NaN'?你可以添加一些示例數據嗎? – miradulo

+0

我有超過100列,有些列只有整數,有些是布爾值,有些是字母數字。日期時間列沒有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

由於大熊貓數據幀的各列是熊貓系列簡單地通過列名的列表遍歷並有條件地檢查日期時間的series.dtype(通常datetime64 [NS] ):

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]']