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

如何使用Pandas获取所有值为常量的列?

找出DataFrame中所有行值相同的列

嘿,我来帮你解决这个问题!要找出DataFrame里所有行值都相同的列,其实有两种简单的方法,直接看代码和解释就行:

import pandas as pd

d = {'A': [1,3,4], 'B': ['hi','hi','hi'], 'C': [2,2,2], 'D': ['a','b','c']}
df = pd.DataFrame(data=d)

# 方法1:用nunique()统计唯一值数量
same_value_cols = df.columns[df.nunique() == 1].tolist()
print(same_value_cols)  # 输出: ['B', 'C']

# 方法2:验证整列元素是否与第一行元素一致
same_value_cols = df.columns[df.eq(df.iloc[0]).all()].tolist()
print(same_value_cols)  # 输出: ['B', 'C']

两种方法的详细解释:

  • 方法1(nunique()):

    • df.nunique()会返回每一列的唯一值个数,比如列B的唯一值只有1个(全是'hi'),列C同理唯一值是2。
    • 我们通过df.nunique() == 1生成布尔索引,筛选出符合条件的列,最后用.tolist()转换成你需要的列表格式。
  • 方法2(eq()+all()):

    • df.eq(df.iloc[0])会把DataFrame中每个元素和该列第一行的元素做相等比较,得到一个布尔值构成的DataFrame。
    • .all()会检查每一列是否所有值都是True(也就是整列所有元素都和第一行一样),再通过布尔索引筛选出这些列并转成列表。

你之前尝试的.any()是用来判断“是否存在至少一个符合条件的元素”,和我们需要的“所有元素都符合条件”正好相反,换成.all()配合合适的比较逻辑就能完美解决啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:47:34