python - 计算 Groupby Dataframe 上的分位数并将值添加回 DF
问题描述
我要做的是将我的数据框分组到分类列上,使用第二列计算分位数,并将结果存储在第三列中。为简单起见,我们只做 P50。下面的例子:
原DF:
Col1 Col2
A 2
B 4
C 2
A 6
B 12
C 10
所需的DF:
Col1 Col2 Col3_P50
A 2 4
B 4 8
C 2 6
A 6 4
B 12 8
C 10 6
一种简单的方法是为每个类别(A、B、C)创建一个小数据框并计算分位数并合并回现有的 DF,但我的实际数据集有 100 个类别,所以这不是一个选项。我们欢迎所有的建议!
解决方案
你可以transform
做quantile
df['Col3_P50'] = df.groupby("Col1")['Col2'].transform('quantile',0.5)
print(df)
Col1 Col2 Col3_P50
0 A 2 4
1 B 4 8
2 C 2 6
3 A 6 4
4 B 12 8
5 C 10 6
如果您有多个值,一种方法是创建一个字典并将键设置为 groupby 内的列名和值:
d = {'P_50':0.5,'P_90':0.9}
for k,v in d.items():
df[k]=df.groupby("Col1")['Col2'].transform('quantile',v)
print(df)
Col1 Col2 P_50 P_90
0 A 2 4 5.6
1 B 4 8 11.2
2 C 2 6 9.2
3 A 6 4 5.6
4 B 12 8 11.2
5 C 10 6 9.2
推荐阅读
- php - 如何使用 AMQPMessage 发送数组 - RabbitMQ
- angular - 如何使用量角器测试日期选择器?
- html - 在小屏幕上将表格更改为两列设计
- aws-lambda - dynamodb 扫描方法返回 null
- angular - Ionic 4 - 使用 localStorage 简单登录
- docker - 如何使用 docker 容器使用 tomcat 或 jenkins
- .htaccess - 使用 gulp 复制 .htaccess(点文件)失败
- react-native - 错误:错误:层次结构中没有找到匹配的视图:(标签值:是“电子邮件”并且视图具有有效的可见性=可见)
- scala - “布罗德搜索树”真的实现了实用吗?
- ruby-on-rails - Rails:respond_to PDF 和 HTML,包含文本和表情符号