如何按Col2分组对DataFrame的Col3、Col4求和并保留Col1
解决Pandas分组求和并保留标识符列的问题
我来帮你搞定这个需求!你需要按Col2分组,对Col3和Col4求和,同时保留作为Col2标识符的Col1(注意到每个Col2对应的Col1都是唯一值,所以直接取该组内的任意值即可)。
实现代码
首先我们先构造你提供的原始DataFrame:
import pandas as pd data = { 'Col1': [10, 10, 30, 45, 45], 'Col2': ['A', 'A', 'B', 'C', 'C'], 'Col3': [5, 6, 2, 5, 2], 'Col4': [4, 3, 7, 1, 1] } df = pd.DataFrame(data)
接下来是分组求和并保留Col1的核心代码:
result_df = df.groupby('Col2').agg( Col1=('Col1', 'first'), # 因为同一Col2下Col1值相同,取first/max/min都可以 Col3=('Col3', 'sum'), Col4=('Col4', 'sum') ).reset_index()[['Col1', 'Col2', 'Col3', 'Col4']] # 调整列顺序和目标一致
运行结果
打印result_df会得到你想要的输出:
Col1 Col2 Col3 Col4 0 10 A 11 7 1 30 B 2 7 2 45 C 7 2
代码解释
groupby('Col2'):按Col2的值进行分组agg():指定每个列的聚合规则,这里Col1取组内第一个值(因为同一分组内Col1是相同的,所以用first/max/min都能得到正确的标识符),Col3和Col4用sum求和reset_index():把作为索引的Col2重新变回普通列- 最后通过
[['Col1', 'Col2', 'Col3', 'Col4']]调整列的顺序,和你期望的结果一致
内容的提问来源于stack exchange,提问作者LinuxNewbie
相关产品推荐
相关产品推荐

