用均值替换值

时间:2017-06-19 16:02:34

标签: python pandas numpy dataframe pandas-groupby

我有一个数据框如下:

         Col1        Price
1      Plastic        50
2        Metal        100
3      Plastic        40

我想通过他们在Price中的方式替换Col1中的值,所以我得到:

         Col1       Price
1         45         50
2        100        100
3         45         40

我已经做过:

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

但我不知道如何更换值,也许使用地图?

3 个答案:

答案 0 :(得分:3)

你是对的 - map可以这样做:

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

答案 1 :(得分:3)

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

输出:

   Col1  Price
1    45     50
2   100    100
3    45     40

答案 2 :(得分:2)

如果您想直接获得结果,可以使用transform

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


   Col1  Price
0    45     50
1   100    100
2    45     40