下面是一个数据帧示例:
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']
但它给了我ValueError: cannot join with no level specified and no overlapping names
。
如何计算这一列?
发布于 2019-06-19 03:19:25
在groupby
系列上试用transform
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
https://stackoverflow.com/questions/56655644
复制相似问题