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

2024-09-30 03:25:49 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是一个数据帧示例:

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

如何计算此列


Tags: 数据no元素示例dfvalueagg老实
1条回答
网友
1楼 · 发布于 2024-09-30 03:25:49

在系列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

相关问题 更多 >

    热门问题