Pandas如何基于分组聚合结果筛选保留符合条件的整组DataFrame行
更简洁的实现方案
直接使用 pandas 的groupby+transform组合即可完成需求,不需要创建临时中间表,核心逻辑仅需一行代码:
import pandas as pd import numpy as np test1 = pd.DataFrame(np.array([[1, 9, 3], [1, 5, 6], [2, 1, 9]]), columns=['a', 'b', 'c']) # 过滤逻辑 test1 = test1[test1.groupby('a')['b'].transform('sum') > 10]
原理解释
transform方法在分组聚合后,会返回和原DataFrame行数完全对齐的结果,每个a分组的b列总和会被映射到该分组下的所有行上,直接通过布尔索引筛选即可保留所有符合「同a值b总和大于10」要求的整组数据,相比原实现代码更简洁,可读性和执行效率也更高。
内容的提问来源于stack exchange,提问作者DennisDa
相关产品推荐
相关产品推荐

