我的数据框如下:
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'每个用户的列。也就是说,在我们按用户ID对数据框进行分组后,我想要一个具有该用户T的数量的列。
这是我所做的,但显然是错的:
df.groupby('userID').agg({'Correct': lambda x: (x == T).count()})
答案 0 :(得分:3)
你真的很接近,使用sum
的{{1}}:
True
但更好的是先过滤然后计算:
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
而userID
添加reindex
:
T
答案 1 :(得分:2)
这将考虑所有' F'并返回0:)
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