如何在Pandas中实现SQL的PARTITION BY分组求和功能?
在Pandas中实现SQL窗口函数
SUM(value) OVER (PARTITION BY group)的效果 你可以使用Pandas的groupby()结合transform()方法实现需求,transform会将分组聚合结果映射回原DataFrame的每一行,完全保留原始结构,和SQL窗口函数的逻辑完全匹配。
原始数据定义
import pandas as pd df = pd.DataFrame({'group':['A','A','A','B','B','B'],'value':[1,2,3,4,5,6]})
实现代码
直接新增GroupSum列即可:
df['GroupSum'] = df.groupby('group')['value'].transform('sum')
结果验证
执行后得到的DataFrame与目标结构完全一致:
print(df) # group value GroupSum # 0 A 1 6 # 1 A 2 6 # 2 A 3 6 # 3 B 4 15 # 4 B 5 15 # 5 B 6 15
原理说明
groupby('group')['value']按group列分组并选取value列transform('sum')对每个分组计算总和,再将该总和填充到对应分组的每一行,最终返回与原DataFrame行数一致的Series,可直接作为新列添加
内容的提问来源于stack exchange,提问作者Hana
相关产品推荐
相关产品推荐

