如何计算分组中位数并附加到数据框作为新列

时间:2019-10-17 12:21:27

标签: python-3.x pandas aggregate median

我有一个数据帧(df),如下所述。

Packet  Orgin   Destination Delivery_Time
A1      NYK          HAM          6
A1      NYK          HAM          5
A1      NYK          HAM          6
A1      NYK          HAM          6
A1      NYK          HAM          3
A1      NYK          HAM          4
A1      NYK          HAM          8
B1       HK           JP          2
B1       HK           JP          4
B1       HK           JP          2
B1       HK           JP          4
B1       HK           JP          4
B1       HK           JP          4
B1       HK           JP          3
B1       HK           JP          5
B1       HK           JP          5
B1       HK           JP          6
C1      CDG          LUX          1
D1      MEX          NYK          3

我要计算数据框(df)的中位数,然后将其附加到数据框作为新列,如下所示:

enter image description here

这怎么办?我有大约5万条记录要分组。

1 个答案:

答案 0 :(得分:1)

GroupBy.transformmedian一起使用:

df['med'] = df.groupby('Packet')['Delivery_Time'].transform('median')
print (df)
   Packet Orgin Destination  Delivery_Time  med
0      A1   NYK         HAM              6    6
1      A1   NYK         HAM              5    6
2      A1   NYK         HAM              6    6
3      A1   NYK         HAM              6    6
4      A1   NYK         HAM              3    6
5      A1   NYK         HAM              4    6
6      A1   NYK         HAM              8    6
7      B1    HK          JP              2    4
8      B1    HK          JP              4    4
9      B1    HK          JP              2    4
10     B1    HK          JP              4    4
11     B1    HK          JP              4    4
12     B1    HK          JP              4    4
13     B1    HK          JP              3    4
14     B1    HK          JP              5    4
15     B1    HK          JP              5    4
16     B1    HK          JP              6    4
17     C1   CDG         LUX              1    1
18     D1   MEX         NYK              3    3