python - 如何为组内的每个值制作一列中位数?
问题描述
我有三列:BatchID、UnitID 和分数。
目前,数据集如下所示:
BatchID UnitID Score
A123 A123-100 0.111
A123 A123-101 0.121
A123 A123-102 0.101
A123 A123-103 0.102
B456 B456-200 0.211
B456 B456-201 0.221
C789 C789-001 0.199
C789 C789-002 0.189
C789 C789-003 0.192
C789 C789-004 0.201
... ... ...
我想添加一个“中位数”列,该列获取每个批次的得分中位数,并将其放在其余数据旁边(在唯一批次中为每个单元重复相同的中值)。像这样的东西:
BatchID UnitID Score Median
A123 A123-100 0.111 0.1065
A123 A123-101 0.121 0.1065
A123 A123-102 0.101 0.1065
A123 A123-103 0.102 0.1065
B456 B456-200 0.211 0.2160
B456 B456-201 0.221 0.2160
C789 C789-001 0.199 0.1955
C789 C789-002 0.189 0.1955
C789 C789-003 0.192 0.1955
C789 C789-004 0.201 0.1955
... ... ... ...
除其他外,我尝试了 groupby,但鉴于在这种情况下我真的不知道如何使用它,这并没有给我想要的输出。
谢谢!
解决方案
groupby
与 一起使用transform
:
df['Median'] = df.groupby('BatchID')['Score'].transform('median')
输出:
BatchID UnitID Score Median
0 A123 A123-100 0.111 0.1065
1 A123 A123-101 0.121 0.1065
2 A123 A123-102 0.101 0.1065
3 A123 A123-103 0.102 0.1065
4 B456 B456-200 0.211 0.2160
5 B456 B456-201 0.221 0.2160
6 C789 C789-001 0.199 0.1955
7 C789 C789-002 0.189 0.1955
8 C789 C789-003 0.192 0.1955
9 C789 C789-004 0.201 0.1955
推荐阅读
- xml - 使用属性解组 xml 标记
- amazon-web-services - how to send AWS sns notification to specific user?
- java - Java执行一个线程并使其他线程处于等待模式
- botframework - 将 Bot Framework Composer 技能导入 PVA:发布到 PVA 还是发布到 Azure 并导入技能?
- r - 如何链接 proj 以在 CentOS 6 上成功安装 sf 包?
- c# - 当我在 mvc 中移动到下一页时,排序丢失
- javascript - 如何使用 Highcharts 库实现类似的折线图?
- python - 大熊猫中的前向填充日期失败 - Python 3.6
- google-apps-script - Google表格:基于单独表格的源列的数组中的条件格式
- spring - Spring Boot 中的 PropertySource 似乎不起作用