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

