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

如何用Python合并DataFrame中含部分重复数据的行?

如何用Python合并DataFrame中重复行的指定列?

Hey there! 我来帮你搞定这个把df1转换成df2的需求~ 其实用pandas就能轻松实现,核心思路是按重复的标识列分组,然后合并目标列的内容。

具体实现步骤

咱们先从创建示例数据开始,然后一步步处理:

import pandas as pd

# 创建你给出的df1示例数据
df1 = pd.DataFrame({
    'name': ['Amy', 'Amy'],
    'area': ['Cal', 'Cal'],
    'number': [1234, 1234],
    'major': ['Math', 'English']
})

# 合并重复行:按name/area/number分组,将major用'-'连接
df2 = df1.groupby(['name', 'area', 'number'], as_index=False)['major'].agg('-'.join)

print(df2)

运行这段代码后,输出的df2就是你想要的结果:

name area  number         major
0   Amy  Cal    1234  Math-English

代码解释

  • groupby(['name', 'area', 'number']):把这三列值完全相同的行归为一组,也就是把Amy的两行放在一起;
  • as_index=False:让分组后的列(name/area/number)保持为普通列,而不是变成索引;
  • ['major'].agg('-'.join):对每组里的major列,用-作为分隔符把所有值拼接成一个字符串。

扩展小技巧

如果你的数据里major列可能有缺失值,不想把空值也拼进去,可以稍微修改一下聚合函数:

df2 = df1.groupby(['name', 'area', 'number'], as_index=False)['major'].agg(lambda x: '-'.join(x.dropna()))

这样就能自动跳过空值啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:44:08