如何用Python/Pandas合并C1-C4列重复行并汇总Value值?
解决Pandas中按指定列合并重复行并汇总值的问题
没问题,这个需求在Pandas里可以通过分组聚合轻松实现。核心思路是按C1-C4列分组,对Value求和,同时保留每组首行的ID、C5、C6内容。
完整解决方案代码
import pandas as pd # 构造你的DataFrame df = pd.DataFrame({ 'Value': [100,50,20,10,5,2], 'ID': [1,2,3,4,5,6], 'C1': ['aa','bb','aa','dd','aa','bb'], 'C2': ['ee','ff','ee','hh','ee','ff'], 'C3': ['ii','jj','ii','ll','ii','jj'], 'C4': ['mm','nn','mm','pp','mm','nn'], 'C5': ['aaaaa','cccc','eeee','gggg','abcd','aaaaa'], 'C6': ['bbbb','ddddd','ffff','hhhh','efgh','bbbb'] }) # 按C1-C4分组,指定各列的聚合规则 result = df.groupby(['C1', 'C2', 'C3', 'C4'], as_index=False).agg({ 'Value': 'sum', # 汇总Value列 'ID': 'first', # 保留每组首行的ID 'C5': 'first', # 保留每组首行的C5 'C6': 'first' # 保留每组首行的C6 }) # 调整列顺序,匹配你期望的输出格式 result = result[['Value', 'ID', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6']] print(result)
代码解释
- 分组:
groupby(['C1', 'C2', 'C3', 'C4'])将所有C1-C4内容完全相同的行归为一组。 - 聚合规则:
'Value': 'sum':对每组的Value值求和,实现汇总需求。'ID': 'first'/'C5': 'first'/'C6': 'first':取每组第一行对应的列值,满足你保留首行内容的要求。
- 列顺序调整:最后通过重新指定列名顺序,让输出和你期望的格式一致。
运行结果
Value ID C1 C2 C3 C4 C5 C6 0 125 1 aa ee ii mm aaaaa bbbb 1 52 2 bb ff jj nn cccc ddddd 2 10 4 dd hh ll pp gggg hhhh
内容的提问来源于stack exchange,提问作者Tom_Hanks
相关产品推荐
相关产品推荐

