Python Pandas如何筛选分组后组内总和符合条件的记录 写法报错解决
问题解决方法
错误修复
你的筛选代码存在语法错误:isin是Pandas Series对象的内置方法,需要通过.调用,且方法入参需要用英文圆括号包裹,修正后的代码如下:
# 原有分组求和逻辑不变 x = df.groupby('ISSUER')['Rating'].sum() x = x[x>6] # 修正后的筛选代码 result = df[df['ISSUER'].isin(x.index)]
运行后会保留所有ISSUER为AH、BZ的原始记录,符合筛选要求。
更优实现方式
这类「按分组聚合条件过滤原始记录」的场景,直接用Pandas GroupBy自带的filter方法即可,无需单独存储分组聚合的中间变量,代码更简洁:
result = df.groupby('ISSUER').filter(lambda group: group['Rating'].sum() > 6)
filter方法会遍历每个分组,只保留符合lambda表达式条件的分组对应的所有原始记录,和分步写法的运行结果完全一致。
内容的提问来源于stack exchange,提问作者Soren Christensen
相关产品推荐
相关产品推荐

