如果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.view
或Series.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())