如何仅对DataFrame中属于指定列表的行执行groupby求和?
解决方案
方法一:先筛选再分组求和
先通过布尔索引筛选出A列值属于my_list的行,再执行分组求和操作:
# 筛选符合条件的数据 filtered_df = df[df['A'].isin(my_list)] # 按A列分组并对B列求和 result = filtered_df.groupby('A')['B'].sum()
执行后输出结果:
A foo 60 bar 80 Name: B, dtype: int64
方法二:分组后过滤分组键
先完成全部分组计算,再直接过滤出分组键在my_list中的结果:
result = df.groupby('A')['B'].sum().filter(my_list)
该方法会直接返回仅包含foo和bar的求和结果,与方法一输出完全一致。
内容的提问来源于stack exchange,提问作者Luiz Scheuer
相关产品推荐
相关产品推荐

