繁体   English   中英

Pandas 对多列分组并进行计算

[英]Pandas group by and perform calculations on multiple columns

我有一个房产数据

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 属性

另一种方法

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

试试这个:

import pandas as pd

df = pd.DataFrame({'Reg':['A', 'B', 'A'], 'Area': [20, 30, 50], 'Price': [356, 98, 900]})
df['AvgUnitPrice'] = df.Price / df.Area
df['AvgUnitPrice'] = df.groupby('Reg')['AvgUnitPrice'].transform('mean') 
print(df)

Output:

  Reg  Area  Price  AvgUnitPrice
0   A    20    356     17.900000
1   B    30     98      3.266667
2   A    50    900     17.900000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM