使用pandas获取所有具有datetime类型的列?

J. *_*Doe 9 python pandas

我有一个巨大的DataFrame,其中的列不是有序的,也不知道它们的名字.

如何查找日期时间类型的所有列?

大多数在线解决方案,海报知道列的名称,所以我有点麻烦,因为我没有.在这种情况下我该怎么办?

mir*_*ulo 11

您可以使用pandas.DataFrame.select_dtypes(),仅包含datetime64类型.

df.select_dtypes(include=['datetime64'])
Run Code Online (Sandbox Code Playgroud)

演示

>>> 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
Run Code Online (Sandbox Code Playgroud)


Par*_*ait 6

由于 pandas DataFrame 的每一列都是 pandas Series,只需迭代列名称列表并有条件地检查series.dtype日期时间(通常为datetime64[ns]):

for col in df.columns:
   if df[col].dtype == 'datetime64[ns]':
      print(col)
Run Code Online (Sandbox Code Playgroud)

或者作为列表理解:

[col for col in df.columns if df[col].dtype == 'datetime64[ns]']
Run Code Online (Sandbox Code Playgroud)

或者作为串联过滤器:

df.dtypes[df.dtypes=='datetime64[ns]']
Run Code Online (Sandbox Code Playgroud)