根据 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/