使用涉及值组第一个元素的计算来添加列

时间:2019-06-18 19:14:25

标签: python pandas

这是一个示例数据框:

[{Pid, NewBalance} | Balances]

我需要添加一个计算列,该列的值例如被划分为其组的第一个元素:

prop1  prop2  prop3  value
a      x      1      2
a      x      2      3
a      y      1      4
a      y      2      5
b      x      1      6
b      x      2      7
b      y      1      8
b      y      2      9 

老实说,我不知道该怎么实现。我尝试过:

prop1  prop2  prop3  value  calculated
a      x      1      2      2/2
a      x      2      3      3/2
a      y      1      4      4/4
a      y      2      5      5/4
b      x      1      6      6/6
b      x      2      7      7/6
b      y      1      8      8/8
b      y      2      9      9/8

但是它给了我df['calculated'] = \ df['value'] / df.groupby(['prop1', 'prop2']).agg('first')['value']

如何计算此列?

1 个答案:

答案 0 :(得分:3)

尝试transform系列的groupby

df['calculated'] = df['value'].div(df.groupby(['prop1', 'prop2'])['value']
                                 .transform('first')
                              )

Output:

  prop1 prop2  prop3  value  calculated
0     a     x      1      2    1.000000
1     a     x      2      3    1.500000
2     a     y      1      4    1.000000
3     a     y      2      5    1.250000
4     b     x      1      6    1.000000
5     b     x      2      7    1.166667
6     b     y      1      8    1.000000
7     b     y      2      9    1.125000