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

如何用Pandas原生方法查找DataFrame中的重复列名?

查找单个DataFrame重复列名的Pandas原生方法

直接用Pandas自带的方法就能快速定位重复列名,不用手动遍历:

  1. 标记重复列(默认跳过首次出现)
    用df.columns.duplicated()生成布尔数组,筛选出重复列:
# 提取重复列名(仅标记第二次及之后出现的重复)
duplicate_cols = df.columns[df.columns.duplicated()]
print("重复列名:", duplicate_cols.tolist())
  1. 标记所有重复列(含首次出现的)
    如果想把所有出现过多次的列都找出来,给duplicated()加keep=False参数:
# 找出所有重复出现的列名
all_duplicate_cols = df.columns[df.columns.duplicated(keep=False)]
print("所有重复列名:", all_duplicate_cols.tolist())
  1. 统计列名出现次数
    用value_counts()直接统计每个列名的出现次数,筛选出次数大于1的:
# 统计列名出现频率,提取重复项
col_counts = df.columns.value_counts()
duplicate_cols = col_counts[col_counts > 1].index.tolist()
print("重复列名及出现次数:\n", col_counts[col_counts > 1])

额外解决拼接报错的小技巧

如果要彻底避免pd.concat()的索引错误,可以先给重复列名加后缀,确保列名唯一:

# 用Pandas内置方法自动去重列名
df.columns = pd.io.parsers.base_parser.ParserBase({'usecols': None})._maybe_dedup_names(df.columns)

或者手动自定义后缀:

from collections import defaultdict

counts = defaultdict(int)
new_columns = []
for col in df.columns:
    counts[col] += 1
    new_columns.append(f"{col}_{counts[col]}" if counts[col] > 1 else col)
df.columns = new_columns

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:42:04