python - 如何计算满足特定条件的pandas groupby的值

标签 python pandas dataframe indexing group-by

在开始之前,我想说明我的问题不同于 Counting values that meet a conditionWant to count the number of values in a column that meet a condition .

请允许我解释一下。这是我的 df:

test = pd.DataFrame({'name':['joe','dan','betty','joe','dan','betty','joe','dan','betty','joe','dan','betty'],'points':[12,3,5,10,5,16,2,8,15,17,1,3]})
test


   name points
0   joe   12
1   dan    3
2   betty  5
3   joe   10
4   dan    5
5   betty 16
6   joe    2
7   dan    8
8   betty 15
9   joe   17
10  dan    1
11  betty  3

我的目标是计算每个人的得分低于 10 分的次数,并创建一个包含该值的新列。我尝试了以下并且非常接近:

test['<10'] = test[test['points'] < 10].groupby('name')['points'].transform('count')
test


    name    points  <10
0   joe       12    NaN
1   dan        3    4.0
2   betty      5    2.0
3   joe       10    NaN
4   dan        5    4.0
5   betty     16    NaN
6   joe        2    1.0
7   dan        8    4.0
8   betty     15    NaN
9   joe       17    NaN
10  dan        1    4.0
11  betty      3    2.0

我得到了我想要的值,但由于我将数据框子集化为值 <10,所以我在被排除的行中留下了 NaN。我几乎已经弄明白了,但我想填充这些 NaN 值以显示每个人的得分少于 10 分的次数(即 joe 应该有 1、betty 2 和 dan 4)。任何帮助表示赞赏,谢谢!

最佳答案

您的代码仅选择 point < 10 所在的行.逻辑是你需要 sum直接在point < 10的面具上. True相当于1False0 .所以,求和 point < 10将返回 True 的计数.从这个逻辑来看,只需要groupby做transform即可填充 True 的计数每组

test['<10'] = (test['points'] < 10).groupby(test['name']).transform('sum')

Out[84]:
     name  points  <10
0     joe      12  1.0
1     dan       3  4.0
2   betty       5  2.0
3     joe      10  1.0
4     dan       5  4.0
5   betty      16  2.0
6     joe       2  1.0
7     dan       8  4.0
8   betty      15  2.0
9     joe      17  1.0
10    dan       1  4.0
11  betty       3  2.0

关于python - 如何计算满足特定条件的pandas groupby的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62273364/

相关文章:

python - 我可以使用日期索引在 pandas 中创建虚拟对象吗?

python:如何根据另一列分别对数据框列的唯一元素求和

python - Pandas:使用 apply 将列拆分为 2

python - Pandas 将数据框列单元格初始化为空列表

python - pandas 动态获取连续周订单数量为空

python - 将嵌套字典转换为多级列数据框

python - 对 Path.open 的模拟/测试调用

python - 连接墙端点

python-2.7 - 如何快速检查一个对象是否在Python列表中

python - 为什么可以调用父类(super class)没有的方法