我有一个数据框如下:
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']
但我不知道如何更换值,也许使用地图?
答案 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