[英]Pandas change existing column values based on another column
我有一個熊貓數據框 df 如下:
A B
0 70.0 20
1 NaN 20
2 28.0 100
3 75.0 120
4 56.0 30
5 84.0 90
6 NaN 100
7 19.0 10
8 93.0 80
9 94.0 70
10 72.0 20
我試圖將 A 的值更改為基於 B 的 A 的平均值。例如,對於 B = 20,我希望所有 A 值的平均值為 70 和 72,忽略 NaN。 請問最好的方法是什么? 我正在按照 groupby 的思路思考……
df['AA']=df.groupby('B')['A'].transform(lambda s: s=s.mean())
那沒有幫助。
IIUC
創建列 A2,以便參考“A”是什么。 您可以隨時更新“A”列
df['AA']=df[~df['A'].isnull()].groupby('B')['A'].transform('mean')
df
A B AA
0 70.0 20 71.0
1 NaN 20 NaN
2 28.0 100 28.0
3 75.0 120 75.0
4 56.0 30 56.0
5 84.0 90 84.0
6 NaN 100 NaN
7 19.0 10 19.0
8 93.0 80 93.0
9 94.0 70 94.0
10 72.0 20 71.0
mean
是默認忽略NaN
s...所以最簡單的方法就是:
df['AA'] = df.groupby('B').transform('mean')
輸出:
A B AA
0 70.0 20 71.0
1 NaN 20 71.0
2 28.0 100 28.0
3 75.0 120 75.0
4 56.0 30 56.0
5 84.0 90 84.0
6 NaN 100 28.0
7 19.0 10 19.0
8 93.0 80 93.0
9 94.0 70 94.0
10 72.0 20 71.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.