通过一列,对熊猫中分组记录的另一列进行自定义操作

Jac*_*iel 3 python apply pandas

我想通过将另一列上的值分组来对一列应用自定义操作。按列分组以获取计数,然后将所有分组记录的另一个列值除以该计数。

我的数据框:

   emp opp amount
0  a   1   10
1  b   1   10
2  c   2   30
3  b   2   30
4  d   2   30
Run Code Online (Sandbox Code Playgroud)

我的情况:

  • 对于opp = 1,工作了两个emp(a,b)。因此,应将金额分成10/2 = 5
  • 对于opp = 2,工作了两个emp(b,c,d)。因此金额应为30/3 = 10

最终输出数据帧:

      emp opp amount
    0  a   1   5
    1  b   1   5
    2  c   2   10
    3  b   2   10
    4  d   2   10
Run Code Online (Sandbox Code Playgroud)

最好的办法是什么

Psi*_*dom 5

df['amount'] = df.groupby('opp')['amount'].transform(lambda g: g/g.size)

df
#  emp  opp amount
# 0  a    1      5
# 1  b    1      5
# 2  c    2     10
# 3  b    2     10
# 4  d    2     10
Run Code Online (Sandbox Code Playgroud)

要么:

df['amount'] = df.groupby('opp')['amount'].apply(lambda g: g/g.size)
Run Code Online (Sandbox Code Playgroud)

做类似的事情。