Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按月份和年份取多个列值的平均值_Python_Python 3.x_Pandas_Date_Dataframe - Fatal编程技术网

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
将系列转换为数据帧时,它会自动将索引解析为相应的列。