如何用单行代码获取pandas DataFrame所有数值类型列名?
获取DataFrame所有数值类型列名称的单行解决方案
方法1:使用select_dtypes(最简洁高效)
pandas的select_dtypes方法专门用于按数据类型筛选列,指定include='number'会匹配所有数值类型(包括int8/uint16/float32等所有尺寸的子类型),单行即可提取列名列表:
import numpy as np import pandas as pd test_df = pd.DataFrame(data=[{"str_col": "some string", "int_col": 0, "float_col": 3.1415, "uint_col": np.uint8(255)}]) # 单行代码 numeric_columns = test_df.select_dtypes(include='number').columns.tolist() print(numeric_columns) # 输出: ['int_col', 'float_col', 'uint_col']
方法2:基于dtypes与np.issubdtype
如果需要基于dtypes做底层类型检测,可利用np.issubdtype判断列类型是否属于数值类型的子类,避免仅匹配特定尺寸的int/float:
# 单行代码 numeric_columns = test_df.dtypes[test_df.dtypes.apply(lambda dtype: np.issubdtype(dtype, np.number))].index.tolist() print(numeric_columns) # 输出: ['int_col', 'float_col', 'uint_col']
说明
- 两种方法都支持大表(数百列)的向量化处理,无性能瓶颈
select_dtypes直观易读,是官方推荐的常规用法np.issubdtype能精准判断类型继承关系,覆盖所有数值子类型
内容的提问来源于stack exchange,提问作者mirekphd
相关产品推荐
相关产品推荐

