这是一个示例数据框:
[{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']
。
如何计算此列?
答案 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