与同一子组中的项目相比的项目价格因素

Item price factor compared to items in same subgroup

我有一个大型数据集,包括商品、商品子组和价格。简化版如下所示:

Item Subgroup Price
1 A 10
2 A 12
3 B 2
4 B 6
5 B 4
6 C 7
7 C 8

我想添加“相对价格”列。此列表示每个项目的价格与同一子组中项目的平均价格的比较。该值等于商品价格除以同一子组中商品的平均价格,四舍五入到小数点后两位。例如,对于项目 1,此变量等于 10/11 = 0.91。因此,我想去:

Item Subgroup Price relativePrice
1 A 10 0.91
2 A 12 1.09
3 B 2 0.50
4 B 6 1.50
5 B 4 1
6 C 7 0.93
7 C 8 1.07

谁能帮我在 Python 中编码这个问题?

使用Groupby.transform and round:

In [352]: df['relativePrice'] = round(df['Price'] /df.groupby('Subgroup')['Price'].transform('mean'), 2)

In [353]: df
Out[353]: 
   Item Subgroup  Price  relativePrice
0     1        A     10           0.91
1     2        A     12           1.09
2     3        B      2           0.50
3     4        B      6           1.50
4     5        B      4           1.00
5     6        C      7           0.93
6     7        C      8           1.07