使用groupby为每个用户计算百分比



我有一个看起来像这样的数据帧:

    completed       User
0      false       sftcb
1       true      jsftcb
2       true      aynood
3       true     poantar
4      false      aynood
5       true       brrow
6       true       brrow
7       true       paose
8       true       pimes
9      false       brrow

我想得到的是每个用户的"true"百分比。我尝试使用:

df1 = df.groupby('user')

但这并没有完成手术。感谢提供的任何帮助

添加到Josmoor98的答案中,您应该首先执行mapping,因为值被解释为字符串。如果您希望将值显示为带有固定小数位数的%,则使用pandas option.display.float_format:

pd.options.display.float_format = '{:.2f}%'.format
df['completed'] = df['completed'].map({'true':True,'false':False})
print(df.groupby('User')['completed'].mean()*100)

输出:

User
aynood    50.00%
brrow     67.67%
jsftcb    100.00%
paose     100.00%
pimes     100.00%
poantar   100.00%
sftcb     0.00%
Name: complete, dtype: float64

您可能在此处收到了KeyError。您可以尝试以下操作。

df.groupby('User').mean() * 100

最新更新