按月份和年份取多个列值的平均值

时间:2018-11-05 23:06:13

标签: 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      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代码,而不完全了解它的工作方式或用法。

是否有更简便的方法来按groupby过滤我需要的内容?我已将日期更改为日期时间格式,因此现在只需进行分组即可。

1 个答案:

答案 0 :(得分:2)

您也可以只使用groupby来完成此操作,如下所示:

data_avg = data.groupby([data['Date'].dt.year.rename('year'), data['Date'].dt.month.rename('month'), data['Hour']])['Product Rate'].mean()