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

如何处理Pandas DataFrame中重复列名并合并对应列值?

解决Pandas合并重复列名为列表的问题

完整解决方案步骤

  1. 重置列名并清理原始数据
    先把首行设置为DataFrame的列名,再移除原首行,同时重置索引解决原数据里的重复索引问题:

    # 将首行设为列名
    df.columns = df.iloc[0]
    # 删除原列名所在的首行
    df = df.drop(df.index[0])
    # 重置索引(可选,处理原数据中的重复索引)
    df = df.reset_index(drop=True)
    
  2. 按列名分组并合并为列表
    使用groupby按列名对列分组,重复列名会被归为一组,对每组数据做处理:重复列的行值合并为列表,唯一列保留原始值:

    # 分组处理重复列
    result_df = df.groupby(df.columns, axis=1).apply(
        lambda group: group.iloc[:, 0] if len(group.columns) == 1 else group.apply(list, axis=1)
    )
    

代码说明

  • groupby(df.columns, axis=1):按列名对DataFrame的列进行分组,所有同名列会被分到同一组
  • 匿名函数逻辑:如果分组仅包含1列(无重复),直接取该列的原始值;如果是多列(重复列),则把每一行的多个值合并成列表
  • 最终生成的result_df完全符合你需要的结构,重复列对应的行值以列表形式呈现

示例输出结果

针对你提供的原始数据,运行代码后会得到:

A   B   C   D
0     [1,5]   2   3   4
1  [26,22]   7  12  17
2     [2,23]   8  13  18
3  [27,24]   9  14  19
4     [3,25]  10  15  20
5  [28,30]  29  30  30

对你现有代码的修正

你之前写的df[:,non_unique]是错误的Pandas索引写法,正确应为df.iloc[:, non_unique],但这种方式只能处理你手动识别的重复列,远不如groupby方法通用——它能自动识别所有重复列名并统一处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:14:54