Python 按月份和年份取多个列值的平均值
我想使用以下数据:Python 按月份和年份取多个列值的平均值,python,python-3.x,pandas,date,dataframe,Python,Python 3.x,Pandas,Date,Dataframe,我想使用以下数据: Date Producer Hour Product Rate 01-01-2001 Hamilton 0 560 01-01-2001 Hamilton 1 540 01-01-2001 Hamilton 2 510 01-01-2001
Date Producer Hour Product Rate
01-01-2001 Hamilton 0 560
01-01-2001 Hamilton 1 540
01-01-2001 Hamilton 2 510
01-01-2001 Hamilton 3 590
01-01-2001 Hamilton 4 600
.
.
.
01-01-2001 Hamilton 23 150
01-02-2001 Hamilton 0 510
01-02-2001 Hamilton 1 530
01-02-2001 Hamilton 2 540
.
.
.
01-01-2001 Checker 0 150
01-01-2001 Checker 1 260
01-01-2001 Checker 2 256
01-01-2001 Checker 3 360
我想根据每个日期每月/每年得到生产率的小时和生产商的平均值
这意味着我们不仅要按小时和制作人分组,还要按月份和年份分组
我想不出一个简单的方法来处理大型数据集。我试过:
data_avg = data.groupby([lambda x: x.year, lambda x: x.month]).mean()
但我不想在不完全了解lambda代码的工作原理或使用方法的情况下简单地复制和粘贴lambda代码
是否有更简单的方法按
groupby
筛选我需要的内容?我已将日期更改为日期时间格式,因此现在需要进行分组。您也可以通过使用groupby
来完成此操作,如下所示:
data_avg = data.groupby([data['Date'].dt.year.rename('year'), data['Date'].dt.month.rename('month'), data['Hour']])['Product Rate'].mean()
@HelloToEarth,现在请检查一下。我编辑了我的anwser。GroupBy中的列表缺少一个括号[]。这创建了一个类似(2010,1,0,'Hamilton')的索引,其中第一个条目是年,第二个是月,第三个是小时,第四个是生产者。是否有一种方法可以将这些列作为实际列生成,而不是像这样分组到索引中?这会转换为一个系列,但当我使用
data\u avg.to\u frame
将系列转换为数据帧时,它会自动将索引解析为相应的列。