繁体   English   中英

GroupBy一列,对pandas中另一列分组记录进行自定义操作

[英]GroupBy one column, custom operation on another column of grouped records in pandas

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

我的数据框架:

   emp opp amount
0  a   1   10
1  b   1   10
2  c   2   30
3  b   2   30
4  d   2   30

我的情景:

  • 对于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

什么是最好的可能

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

要么:

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

做类似的事情。

你可以尝试这样的事情:

df2 = df.groupby('opp').amount.count()
df.loc[:, 'calculated'] = df.apply( lambda row: \
                                  row.amount / df2.ix[row.opp], axis=1)
df

产量:

  emp  opp  amount  calculated
0   a    1      10           5
1   b    1      10           5
2   c    2      30          10
3   b    2      30          10
4   d    2      30          10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM