Pandas:具有相同ID的前几行的平均值/中位数

xzlaal3s  于 2024-01-04  发布在  其他
关注(0)|答案(1)|浏览(129)

我有以下命令DataFrame

Index  ID  Amount
1      A   10
2      A   15
3      A   17
4      A   12
5      A   10
6      B   20
7      B   15
...

字符串
我想要的是添加一个列,指示相同ID的所有先例金额的中位数
结果必须如下

Index  ID  Amount  (PastElements)   MedianOfPastElements
1      A   10      ()
2      A   15      (10)             10
3      A   17      (10;15)          12.5
4      A   12      (10;15;17)       15
5      A   10      (10;12;15;17)    13.5  
6      B   20      ()              
7      B   15      (20)             20
...


我不必在结果中保留PastElements列,我只是添加它来澄清我的问题。有人看到任何方法吗?提前感谢

6xfqseft

6xfqseft1#

groupby.transformshiftexpanding.median一起使用:

df['MedianOfPastElements'] = (df.groupby('ID')['Amount']
                                .transform(lambda s: s.shift().expanding().median())
                             )

字符串
输出量:

Index ID  Amount  MedianOfPastElements
0      1  A      10                   NaN
1      2  A      15                  10.0
2      3  A      17                  12.5
3      4  A      12                  15.0
4      5  A      10                  13.5
5      6  B      20                   NaN
6      7  B      15                  20.0

相关问题