You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Pandas DataFrame中非float类型的列名列表?

获取DataFrame中非float类型的列名列表

没问题,你已经走了一半啦!要从那个布尔数组拿到对应的列名,其实只需要用布尔索引直接筛选DataFrame的列名就行,这里有几种简单好懂的方法:

方法一:基于你已有的布尔数组改造

你已经生成了categorical这个布尔标记数组,直接用它来索引df.columns就能得到目标列名,最后转成列表就搞定:

import pandas as pd
import numpy as np

# 假设你的DataFrame已经定义好
categorical_mask = (df.dtypes.values != np.dtype('float64'))
non_float_columns = df.columns[categorical_mask].tolist()

解释下:df.columns是所有列名的索引对象,用布尔数组过滤后,.tolist()会把它转成普通的Python列表,这就是你要的结果。

方法二:更简洁的直接判断写法

其实不用绕numpy的dtype,pandas本身支持直接判断列类型,代码更清爽:

non_float_columns = df.columns[df.dtypes != 'float64'].tolist()

方法三:一步到位的优雅写法

还可以用select_dtypes方法直接排除指定类型,可读性拉满:

non_float_columns = df.select_dtypes(exclude=['float64']).columns.tolist()

这个方法直接告诉pandas「排除float64类型的列」,然后取剩下的列名转成列表,新手也能一眼看懂。

举个例子验证

拿个测试DataFrame试试效果:

df = pd.DataFrame({
    'col1': [1,2,3],                  # int类型
    'col2': [1.1,2.2,3.3],            # float64类型
    'col3': ['a','b','c'],            # object类型
    'col4': pd.Categorical(['x','y','z'])  # 分类类型
})

# 用方法三执行
print(df.select_dtypes(exclude=['float64']).columns.tolist())
# 输出:['col1', 'col3', 'col4']

完全符合预期,拿到了所有非float64的列名。

内容的提问来源于stack exchange,提问作者yogz123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:55:54