2017-06-19 69 views
2

我有一個數據幀如下替換值:由平均

  Col1  Price 
1  Plastic  50 
2  Metal  100 
3  Plastic  40 

我想通過自己的價格手段,以取代在Col1中的值,所以我得到:

  Col1  Price 
1   45   50 
2  100  100 
3   45   40 

我已經已經這樣做:

df.groupby('Col1').mean()['Price'] 

但我不知道如何更換值,也許使用地圖?

回答

3

你是正確─map可以用來做像這樣:

df['Col1'] = df['Col1'].map(df.groupby('Col1')['Price'].mean()) 
df 
    Col1 Price 
1 45  50 
2 100 100 
3 45  40 
+0

我喜歡你的swer! :) +1 –

+0

@ScottBoston 1000種方法來爲他們說的皮膚貓! ;) –

+0

工作謝謝! – hdatas

3
df.assign(Col1=df.Col1.map(df.groupby('Col1').mean().squeeze())) 

輸出:

Col1 Price 
1 45  50 
2 100 100 
3 45  40 
2

如果直接想要的結果,您可以使用transform

df['Col1']=df.groupby(['Col1'])['Price'].transform('mean') 


    Col1 Price 
0 45  50 
1 100 100 
2 45  40