python - 如何获得等于字符串值的元素的百分比
问题描述
如何获得按组 ( name
)t_results
等于 "ok" 的百分比?
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
布尔掩码,比较 by Series.eq
,转换为0, 1
by Series.view
orSeries.astype
和聚合 by df['name']
as 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())
推荐阅读
- python - Using lambda in defining value in dict
- javascript - 在 Ember.js 中,子数组元素的 ID 不会在 ajax put 中传递
- android - 从 webview 中的“getHitTestResult()”获取图像类型
- batch-file - 有没有办法查看特定文件夹的文件大小?
- sql-server - SSRS 数据集中的条件过滤器
- c# - ASP.net core3.1 mvc数据展示
- c# - 我在做一些编码面试练习题,不知道为什么这个题的答案是65、65
- java - 如何对 3 类列表中的列表进行排序
- sql - 与 Count 的内连接,多个表
- python - 如何为每个索引值重置 Pandas 中的 rolling()?