![](/img/trans.png)
[英]How to apply a function on a pandas groupby object and save the results back into a new column of the parent dataframe?
[英]Pandas Dataframe Question: Apply function add new column with results
import pandas as pd
df = pd.DataFrame({'label': 'a a b c b c'.split(), 'Val': [2,2,6, 4,6, 8]})
df
label Val
0 a 2
1 a 2
2 b 6
3 c 4
4 b 6
5 c 8
df.groupby('label').apply(lambda x: x.mean())
Val
label
a 2.0
b 6.0
c 6.0
我想要這樣的東西。 結果是值除以唯一標簽的平均值:
label Val Results
0 a 2 1
1 a 2 1
2 b 6 1
3 c 4 0.6667
4 b 6 1
5 c 8 1.3333
不完全確定該怎么做。 有人有想法嗎? 試過這個但沒有用:
df['Results'] = df.groupby('label').apply(lambda x: x/x.mean())
您已關閉,在groupby
之后添加列Val
以處理此列:
df['Results'] = df.groupby('label')['Val'].apply(lambda x: x/x.mean())
print (df)
label Val Results
0 a 2 1.000000
1 a 2 1.000000
2 b 6 1.000000
3 c 4 0.666667
4 b 6 1.000000
5 c 8 1.333333
使用GroupBy.transform
為由聚合值填充的新Series
提高性能的另一個想法,與原始列的大小相同,因此可能划分:
df['Results'] = df['Val'].div(df.groupby('label')['Val'].transform('mean'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.