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

pandas读取CSV重复列自动加.1导致drop_duplicates失效如何解决

问题原因
  • pandas的DataFrame结构要求列名唯一,pd.read_csv()默认检测到重复表头时,会自动为第2个及之后的重复列追加.1、.2格式的后缀,避免列名冲突,这是pandas的默认处理逻辑。
  • drop_duplicates()方法的作用是按行删除数值完全相同的重复行,而非处理重复列,被自动重命名后的列会被识别为独立列,自然无法通过该方法实现重复列的去重或合并。
解决方案

首先读取文件时保留原始重复列名,避免pandas自动加后缀:

import pandas as pd

file = 'survey.csv'
# 先读取原始表头(你指定header=1即CSV的第二行作为表头)
raw_header = pd.read_csv(file, nrows=1, skiprows=0).columns.tolist()
# 读取实际数据,跳过前两行(第一行是表头之前的内容,第二行是表头行)
responses = pd.read_csv(file, skiprows=2, header=None)
# 给数据集设置原始的重复列名
responses.columns = raw_header

之后根据你的实际需求选择处理逻辑:

场景1:删除数值完全相同的重复列

如果同名列的所有行数值完全一致,仅需保留一份,执行以下代码:

# 转置后按行去重,再转置回原结构即可删除重复列
responses = responses.T.drop_duplicates().T

场景2:合并同名列的数据

如果同一个列名对应多份收集结果,需要合并为同一列,可按列名分组后自定义合并逻辑,示例如下:

# 按列名分组,取每行第一个非空值作为合并结果
responses = responses.groupby(level=0, axis=1).first()

# 若为数值类问题需要取平均值,可替换为以下逻辑
# responses = responses.groupby(level=0, axis=1).mean()

注意:旧版本pandas提供的mangle_dupe_cols参数已在2.0+版本完全移除,不建议使用该参数控制重复列名处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:24:05