如何获取等于字符串值的元素百分比



如果t_results等于"ok",如何获得按组(name(的百分比?

name   t_result
0   aaa    ok   
1   aaa    err_1
2   bbb    err_1
3   bbb    ok
4   aaa    err_2
5   aaa    ok

name, percentage
aaa   0.5
bbb   0.5

您可以使用布尔掩码的mean,通过Series.eq进行比较,通过Series.viewSeries.astype转换为0, 1,并通过df['name']聚合为Series:

df1 = (df['t_result'].eq('ok')
.view('i1') # .astype(int)
.groupby(df['name'])
.mean()
.reset_index(name='percentage'))
print (df1)
name  percentage
0  aaa         0.5
1  bbb         0.5

具有新列并按列名name:聚合的解决方案

df1 = (df.assign(percentage = df['t_result'].eq('ok').view('i1'))
.groupby('name', as_index=False)
.mean())

最新更新