Python 按分组后,计算数据帧中特定值的数量

Python 按分组后,计算数据帧中特定值的数量,python,pandas,group-by,Python,Pandas,Group By,我有一个数据框,如下所示: userID Correct 0 1050 F 1 1050 T 2 1050 T 3 1050 F 4 1050 F 5 1050 F 6 1050 F 7 1050 F 8 1050 F 9 1050 F 10 1051 F 11 1051 F 12 1051 F 13 1051 F 14 1051 F 15 10

我有一个数据框,如下所示:

    userID  Correct
0   1050    F
1   1050    T
2   1050    T
3   1050    F
4   1050    F
5   1050    F
6   1050    F
7   1050    F
8   1050    F
9   1050    F
10  1051    F
11  1051    F
12  1051    F
13  1051    F
14  1051    F
15  1051    T
16  1051    F
17  1051    F
18  1051    F
19  1051    T
我想做的是为每个用户计算“正确”列的T数。也就是说,在我们按userID对数据帧进行分组之后,我想要一个列,其中包含该用户的T数

以下是我所做的,但显然是错误的:

df.groupby('userID').agg({'Correct': lambda x: (x == T).count()})

您非常接近,请使用
True
s的
sum

df1 = df.groupby('userID').agg({'Correct': lambda x: (x == 'T').sum()})
print (df1)
        Correct
userID         
1050          2
1051          2
但最好先过滤,然后计数:

df1 = df[df['Correct'] == 'T'].groupby('userID').size().to_frame('Correct')
print (df1)
        Correct
userID         
1050          2
1051          2
对于添加
0
对于没有
T的
userID
添加:


这将考虑所有的“F”和返回0:)/P> 输入数据:

df1
Out[372]: 
    userID Correct
0     1050       F
1     1050       T
2     1050       T
3     1050       F
4     1050       F
5     1050       F
6     1050       F
7     1050       F
8     1050       F
9     1050       F
10    1051       F
11    1051       F
12    1051       F
13    1051       F
14    1051       F
15    1051       F
16    1051       F
17    1051       F
18    1051       F
19    1051       F

使用sum会得到奇怪的结果。例如,用户1050有两个T,但sum只返回1。另外,预先过滤T不起作用,因为我还需要零作为计数。我不希望每个用户的t计数都丢失零。我为它添加了
reindex
——它为所有
userID
添加了
0
,没有
t
df1.groupby('userID').Correct.apply(lambda x : len(x[x=='T']))

Out[371]: 
userID
1050    2
1051    0
df1
Out[372]: 
    userID Correct
0     1050       F
1     1050       T
2     1050       T
3     1050       F
4     1050       F
5     1050       F
6     1050       F
7     1050       F
8     1050       F
9     1050       F
10    1051       F
11    1051       F
12    1051       F
13    1051       F
14    1051       F
15    1051       F
16    1051       F
17    1051       F
18    1051       F
19    1051       F