如何用Pandas原生方法查找DataFrame中的重复列名?
查找单个DataFrame重复列名的Pandas原生方法
直接用Pandas自带的方法就能快速定位重复列名,不用手动遍历:
- 标记重复列(默认跳过首次出现)
用df.columns.duplicated()生成布尔数组,筛选出重复列:
# 提取重复列名(仅标记第二次及之后出现的重复) duplicate_cols = df.columns[df.columns.duplicated()] print("重复列名:", duplicate_cols.tolist())
- 标记所有重复列(含首次出现的)
如果想把所有出现过多次的列都找出来,给duplicated()加keep=False参数:
# 找出所有重复出现的列名 all_duplicate_cols = df.columns[df.columns.duplicated(keep=False)] print("所有重复列名:", all_duplicate_cols.tolist())
- 统计列名出现次数
用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
相关产品推荐
相关产品推荐

