如何在R语言中依据AY分组的paid列总和删除多行?
按分组删除总和为0的行
原始数据
假设我们有如下Pandas数据框df:
LoB AY DY claims paid 2 2002 0 1 652 2 2004 0 1 0 2 2005 0 1 0 2 2002 1 0 0 2 2004 1 0 0 2 2002 2 0 0 2 2002 3 0 0
需求
需要删除同一AY分组下paid列总和为0的所有行。比如AY=2004的两行paid总和为0,AY=2005的行paid总和也为0,这些行都需要移除,最终只保留AY=2002的所有行。
解决方案
方法1:用groupby + transform筛选
先按AY分组计算每个组的paid总和,再把这个总和映射到每一行,最后只保留所在组总和大于0的行:
import pandas as pd df_filtered = df[df.groupby('AY')['paid'].transform('sum') > 0]
方法2:用groupby + filter直接筛选分组
这种方式更直观,直接对每个AY分组做判断,只留下paid总和大于0的分组:
df_filtered = df.groupby('AY').filter(lambda x: x['paid'].sum() > 0)
两种方法都能得到目标结果:
LoB AY DY claims paid 2 2002 0 1 652 2 2002 1 0 0 2 2002 2 0 0 2 2002 3 0 0
内容的提问来源于stack exchange,提问作者JGM
相关产品推荐
相关产品推荐

