pandas - 检测特定 Pandas 列类型的pythonic方法

标签 pandas

根据 dtype 选择列的最 pythonic 方法是什么? (只需要列而不是像 select_dtypes 那样的整个 df)。
假设我们正在寻找 datetime列,目前我们正在使用:

date_cols = [col for col in df.columns if "datetime" in str(df[col].dtype]

另一种选择是

date_cols = [col for col in df.columns if isinstance(df[col].dtype, pd.core.dtypes.dtypes.XXXX)]

但找不到 dtype('<M8[ns]') 的正确数据类型.
np.datetime64也没有检测到它。

最佳答案

使用pandas.api.types.is_datetime64_dtype , 查看所有可能功能的列表 general_utility_functions :

rng = pd.date_range('2017-04-03', periods=10)
df = pd.DataFrame({'Date': rng, 'a': range(10)})  
print (df)

date_cols = [col for col in df.columns if pd.api.types.is_datetime64_dtype(df[col])]
print (date_cols)
['Date']

更简单的是 DataFrame.select_dtypes有列:

date_cols = df.select_dtypes('datetime64').columns
print (date_cols)
Index(['Date'], dtype='object')

或者:

date_cols = df.columns[df.dtypes.map(pd.api.types.is_datetime64_dtype)]
print (date_cols)
Index(['Date'], dtype='object')

关于pandas - 检测特定 Pandas 列类型的pythonic方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58787376/

相关文章:

python - 用另一个时间序列覆盖一个时间序列

python - 在数据框中创建峰值列

python - 通过分箱列访问 pandas 中的行

python - Pandas 数据框 : join items in range based on their geo coordinates (longitude and latitude)

python - 有条件的 pandas groupby

python - pandas datetime64[ns] 之间的差异(以毫秒为单位)

python - 根据条件创建列

python - pandas 聚合的条件总和

python - 使用选择的 5*5 网格和范围字符串转换 DataFrame

python - 如何替换 spark 数据框所有列中的多个字符?