You need to enable JavaScript to run this app. pandas导入含重复列名的CSV文件时如何拼接合并同名列?
优惠活动
大模型
产品
解决方案
定价
更多

pandas导入含重复列名的CSV文件时如何拼接合并同名列?

解决方法

方法1:通用兼容方案(适用于所有pandas版本)

不需要依赖pandas废弃参数,先读取全表再拆分表头和数据即可:

import pandas as pd

# 读取全表,暂不自动设置表头
df = pd.read_csv("你的文件路径.csv", header=None)
# 提取第一行作为原始列名
raw_cols = df.iloc[0].tolist()
# 截取第二行及以下的实际数据,重置索引
df = df[1:].reset_index(drop=True)
# 给数据设置回原始的重复列名
df.columns = raw_cols
# (可选)自动转换数据为合适的数值类型,避免全为字符串格式
df = df.apply(pd.to_numeric, errors="ignore")
# 获取按原始顺序排列的唯一列名
unique_cols = list(dict.fromkeys(raw_cols))

# 合并同名列
result = pd.DataFrame()
for col in unique_cols:
    # 提取所有当前同名的列,按行拼接成单列
    result[col] = pd.concat([df[col_part] for col_part in df.columns[df.columns == col]], ignore_index=True)

如果想要更简洁的写法,在设置好重复列名后,也可以用groupby单行实现合并:

result = df.groupby(axis=1, level=0).apply(lambda x: pd.Series(x.to_numpy().ravel(order="F")))

方法2:旧版pandas快捷方案(仅适用于pandas ≤1.5版本)

可以直接通过mangle_dupe_cols=False参数禁止pandas自动给重复列加后缀,读取后直接处理:

import pandas as pd

# 读取时保留原始重复列名
df = pd.read_csv("你的文件路径.csv", mangle_dupe_cols=False)
unique_cols = list(dict.fromkeys(df.columns))

result = pd.DataFrame()
for col in unique_cols:
    result[col] = pd.concat([df[col_part] for col_part in df.columns[df.columns == col]], ignore_index=True)

两种方法运行后得到的result即为你需要的合并后结果,和你给出的预期输出完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 13:45:04