簡體   English   中英

如何為組內的每個值制作一列中位數?

[英]How to make a column of median for each value within groups?

我有三列:BatchID,UnitID和Score。

目前,數據集如下所示:

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
...          ...              ...

我想添加一列“中位數”,以獲取每個BATCH的得分中位數,並將其放置在其余數據的旁邊(對唯一批次中的每個單元重復相同的中位數)。 像這樣:

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,但是鑒於我並不真正知道在這種情況下如何使用它,因此沒有給我想要的輸出。

謝謝!

groupbytransform一起使用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM