簡體   English   中英

Pandas 根據另一列更改現有列值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM