【发布时间】:2020-04-18 12:13:11
【问题描述】:
我有一个如下所示的数据框。
Unit_ID Price Sector Contract_Date Rooms
1 20 SE1 16-10-2015 2
9 40 SE1 20-10-2015 2
2 40 SE1 16-10-2016 3
2 30 SE1 16-10-2015 3
3 20 SE1 16-10-2015 3
3 10 SE1 16-10-2016 3
4 60 SE1 16-10-2016 2
5 40 SE2 16-10-2015 2
8 80 SE1 20-10-2015 2
6 80 SE2 16-10-2016 3
6 60 SE2 16-10-2015 3
7 40 SE2 16-10-2015 3
7 20 SE2 16-10-2015 3
8 120 SE2 16-10-2016 2
从上面我想在熊猫中准备一个如下所示的数据框。
预期输出:
Sector Rooms Year Average_Price
SE1 2 2015 30
SE1 2 2016 60
SE1 3 2015 25
SE1 3 2016 25
SE2 2 2015 60
SE2 2 2016 120
SE2 3 2015 50
SE2 3 2016 50
我想我应该使用 pandas groupby
我尝试了以下代码
df['Year'] = df.Contract_Date.dt.year
df1 = df.groupby(['Sector', 'Year', 'Rooms']).Price.mean()
【问题讨论】:
-
那不行吗?您的
Date_Created实际上是日期类型吗?你得到什么错误/结果? -
@JonClements 我希望它采用正确的表格格式,而不是系列。
-
我认为你的代码工作正常,除了你错过了索引 8,-->
80 SE1 20-10-2015 2例如在你的手动计算中,你只取了前两行room 2@987654327 @和部门SE1 -
也许你需要像这样添加
reset_index():df.groupby(['Sector', 'Year', 'Rooms']).Price.mean().reset_index() -
或:
df.groupby(['Sector', 'Year', 'Rooms'],as_index=False).Price.mean()
标签: pandas pandas-groupby