首页 > 解决方案 > Pandas 按多列分组并执行计算

问题描述

我有房地产数据

Reg  Area  Price
A    20    356
B    30    98
A    50    900

我想得到

Reg  Area  Price   AvgUnitPrice
A    20    356     17.9
B    30    98      3.26
A    50    900     17.9

对于每个区域,获取所有属性并计算该区域每单位面积的平均价格并创建具有该值的新列

例如对于区域 A,我们有

1. Area = 20, Price= 356 => Price per Area = 17.8
2. Area = 50, Price= 900 => Price per Area = 18

因此区域 A 的单位面积平均价格变为

(17.8 + 18) / 2 = 17.9

然后将此值传递给所有区域 A 属性

标签: pythonpandas

解决方案


另一种方法

a = (df.groupby('Reg', sort=False)['Price'].sum()/df.groupby('Reg',sort=False)['Area'].sum()).reset_index(name='AuP')
df.merge(a, on= 'Reg',sort=False)

(输出

Reg Area    Price   AuP
A   20        356   17.942857
A   50        900   17.942857
B   30         98   3.266667

推荐阅读