簡體   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