如果满足两个条件,计算均值
Compute mean if two conditions are met
设置
我正在使用 Scrapy 抓取房屋广告,随后使用 pandas 分析数据。
我使用 pandas 来计算几个住房特征的均值和中位数。
数据框 df
看起来像,
district | rent | rooms | …
----------------------------
North | 200 | 3 | …
South | 300 | 1 | …
South | 300 | 1 | …
⋮ ⋮ ⋮ ⋮
问题
我想计算每个地区 n 间公寓的平均租金。
我找到了一个答案 ,这让我很接近,例如
df.loc[df['rooms'] == 1, 'rent'].mean()
但这计算的是整个城市一居室公寓的平均租金。
要按地区进行,我想做类似的事情,
for d in district_set:
df.loc[df['rooms'] == 1 and df['district'] == d, 'rent'].mean()
其中 district_set
包含所有可能的选区。
有什么建议吗?
我想获得以下table,
district | avg rent 1R | avg rent 2R | …
----------------------------------------
North | 200 | 400 | …
South | 300 | 500 | …
⋮ ⋮ ⋮
df.groupby(['district', 'rooms'])['rent'].mean().unstack()
应该可以。 unstack()
将先前表达式返回的 MultiIndex 转换为 table,其中 district
为行,rooms
为列。
您可以通过按地区和房间数量分组来折叠数据框,然后按照@bigbounty 的建议使用均值进行聚合。
df.groupby(['rooms', 'district'])['rent'].mean()
设置
我正在使用 Scrapy 抓取房屋广告,随后使用 pandas 分析数据。
我使用 pandas 来计算几个住房特征的均值和中位数。
数据框 df
看起来像,
district | rent | rooms | …
----------------------------
North | 200 | 3 | …
South | 300 | 1 | …
South | 300 | 1 | …
⋮ ⋮ ⋮ ⋮
问题
我想计算每个地区 n 间公寓的平均租金。
我找到了一个答案
df.loc[df['rooms'] == 1, 'rent'].mean()
但这计算的是整个城市一居室公寓的平均租金。
要按地区进行,我想做类似的事情,
for d in district_set:
df.loc[df['rooms'] == 1 and df['district'] == d, 'rent'].mean()
其中 district_set
包含所有可能的选区。
有什么建议吗?
我想获得以下table,
district | avg rent 1R | avg rent 2R | …
----------------------------------------
North | 200 | 400 | …
South | 300 | 500 | …
⋮ ⋮ ⋮
df.groupby(['district', 'rooms'])['rent'].mean().unstack()
应该可以。 unstack()
将先前表达式返回的 MultiIndex 转换为 table,其中 district
为行,rooms
为列。
您可以通过按地区和房间数量分组来折叠数据框,然后按照@bigbounty 的建议使用均值进行聚合。
df.groupby(['rooms', 'district'])['rent'].mean()