python - 如何在python中用总大小划分组的每个值?
问题描述
我在“质量”、“价格”、“时间”列中有一个带有是/否答案的数据框。
我转换为 1 和 0 并分组
grouped = df.group.by(['country'])[['quality','price','time']].sum()
只得到“是”的答案,结果是:
国家 | 质量 | 价格 | 时间 |
---|---|---|---|
法国 | 5 | 4 | 3 |
德国 | 3 | 2 | 6 |
英国 | 2 | 1 | 4 |
我想知道如何将每个国家/地区受访者的大小(总共 N 个)中的每个值划分为 groupby,在我的情况下,FRANCE = 9,GERMANY = 11,UK = 12。
我知道我可以选择单个组并对其进行操作:
france = country_split.loc[['FRANCE']]
(france/9)*100
但是有可能一次性为整个集团做手术吗?
解决方案
在 aggregate 之后用于Series.value_counts
列的计数和除值sum
,然后乘以100
:
#if need dict for counts
#s = {'FRANCE': 9, 'GERMANY': 11, 'UK': 12}
s = df['country'].value_counts()
grouped = df.groupby(['country'])[['quality','price','time']].sum().div(s, axis=0).mul(100)
print (grouped)
quality price time
country
FRANCE 55.555556 44.444444 33.333333
GERMANY 27.272727 18.181818 54.545455
UK 16.666667 8.333333 33.333333
mean
未经测试,但可能的解决方案应该是聚合的sum
:
grouped = df.groupby(['country'])[['quality','price','time']].mean()
推荐阅读
- javascript - 当我使用可选链并将 browserslistrc 设置为 Electron 12.0.2 时无法构建 Vue 项目
- powerbi - Power BI 将 sql 查询转换为筛选器
- android-studio - 无法解析符号“R”(膨胀类片段时出错)
- node.js - Axios:出现“网络错误”时如何获取错误代码?
- python - 如何在没有 ('',) 的情况下接收 cur.fetchone 输出
- java - Socked 超时异常
- reactjs - 包含嵌套对象的 setState 的最佳方法是什么
- android - 在全屏横向模式下反应本机 TextInput 颜色问题
- java - Android Studio Activity Bundle 对象中的 Robolectric 测试为空,测试太快了吗?
- php - 获取日期和时间前 30 分钟的记录