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
相关产品推荐
相关产品推荐

