2017-02-19 48 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]']