Pandas实现按BU分组统计DataFrame指定列大于0的行数
按BU分组统计指定列大于0的行数实现方法
核心逻辑和你原有的非分组统计逻辑完全一致:先对目标季度列做数值大于0的布尔判断(True计数为1、False计数为0),再按BU分组后对布尔值求和即可,无需改动原有判断规则。
可落地代码实现
# 沿用你已定义的待统计列 cols = ['1Q16','2Q16','3Q16'] # 按BU分组统计各列大于0的行数 result = df[cols].gt(0).groupby(df['BU']).sum()
输出结果说明
上述代码运行后得到的统计结果如下:
| BU | 1Q16 | 2Q16 | 3Q16 |
|---|---|---|---|
| CRS | 3 | 3 | 2 |
| Total | 2 | 2 | 2 |
补充说明
- 该写法中
df[cols].gt(0)生成的布尔表与原DataFrame索引完全对齐,直接传入df['BU']作为分组键即可匹配每组对应的行,无需额外将BU列拼接至布尔表中,运行效率更高。 - 如果需要将BU转为普通列而非行索引,可在代码末尾加
.reset_index(),对应代码为:result = df[cols].gt(0).groupby(df['BU']).sum().reset_index()
内容的提问来源于stack exchange,提问作者postcolonialist
相关产品推荐
相关产品推荐

