首页 > 解决方案 > 熊猫 - 有条件的分组

问题描述

我想根据给定的范围条件对我的熊猫数据框进行分组。例如:

Number, Amount
1, 5
2, 10
3, 11
4, 3
5, 5
6, 8
7, 9
8, 6

范围条件:

1 到 4(包括),命名为 A:5+10+11+3 = 29

5 及以上,命名为 B:5+8+9+6 = 28

期望的结果:

Number, Amount
A, 29
B, 28

编辑:感谢伟大的解决方案。如果需要,我希望能够添加更多范围条件,因此单独使用 5-7 和 8 也应该是可能的。是否有可能保持这种灵活性?

标签: pythonpandaspandas-groupby

解决方案


您可以检查 的值Number,然后将其映射到A,Bgroupby:

(df.Amount.groupby(df.Number.ge(5).map({True:'B',False:'A'}))
   .sum()
   .reset_index()
)

输出:

  Number  Amount
0      A      29
1      B      28

推荐阅读