对数据帧进行分组,并计算单元格值和中值计算之间的比率



我要做的是按ColA分组,并计算该组的ColB值与ColB中值之间的比率。此比率将是一个新列。

原始DF

ColA     ColB
grp1      2
grp1      10
grp1      8
grp1      22
grp2      6
grp2      14
grp2      12
grp2      32
grp3      10
grp3      20
grp3      30
grp3      6

grp1的中位数为9.0,grp2为13.0,grp3为15。因此,新列(ColC(只是ColB和组中值之间的比率。因此:

所需DF

ColA     ColB     ColC
grp1      2       0.22
grp1      10      1.11
grp1      8       0.89
grp1      22      2.44
grp2      6       0.46
grp2      14      1.07
grp2      12      0.92
grp2      32      2.46
grp3      10      0.66
grp3      20      1.33
grp3      30      2.00
grp3      6       0.40

试用groupby:

data["ColC"] = data["ColB"].div(data.groupby("ColA")["ColB"].transform("median"))
>>> data
ColA  ColB      ColC
0   grp1     2  0.222222
1   grp1    10  1.111111
2   grp1     8  0.888889
3   grp1    22  2.444444
4   grp2     6  0.461538
5   grp2    14  1.076923
6   grp2    12  0.923077
7   grp2    32  2.461538
8   grp3    10  0.666667
9   grp3    20  1.333333
10  grp3    30  2.000000
11  grp3     6  0.400000

相关内容

  • 没有找到相关文章

最新更新