python - 分组后计算数据框中某些值的数量

标签 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  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()})

最佳答案

你真的很接近,使用 Truesum:

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

要为没有TuserID 添加0 添加reindex :

df1 = (df[df['Correct'] == 'T'].groupby('userID')
                              .size()
                              .reindex(df['userID'].unique(), fill_value=0)
                              .to_frame('Correct'))
print (df1)
        Correct
userID         
1050          2
1051          2
333           0

关于python - 分组后计算数据框中某些值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46326434/

相关文章:

python - 在 python 中以编程方式打开页面

python - 移动 dask 数据框中的所有行

r - 分组并保留不同列中具有最大值的整行

python - 如何处理有关将 int 应用于包含一项的系列的 FutureWarning?

python - Pandas 单词中重复的元音和辅音

sql - Postgres 基于 2 列聚合结果

sql - 左加入和分组依据

python - 计算一个数据框中项目在另一个数据框中的出现次数

python - 如何确保只打印一次?

python - 如何生成字符串与字符之间有空格的所有可能组合? Python