gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:23:23 24 4
gpt4 key购买 nike

在开始之前,我想说明我的问题不同于 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com