首页 > 解决方案 > 按日期计算的棘手 groupby/移动平均值

问题描述

我无法在不使事情复杂化的情况下说明我的数据形式问题。所以请耐心等待,因为我想从以下屏幕截图开始仅用于解释问题(也就是数据不是这种形式):

在此处输入图像描述

我想在所有垃圾箱中用一个 > 0 的数字标识过去 14 天(也就是总行的值大于 0)。这将包括除第 5 天和第 12 天(以红色突出显示)之外的所有天。然后,我想对这 14 天的 bin 进行水平求和(即按 bin 计算所有天数,预计 5 天和 12 天的总和),目标是最终按 bin 数计算 14 天的平均值。

请注意,上面的示例适用于一个“车道”,其中我的数据 > 10,000。该示例也仅说明今天是第 16 天。但我想将此逻辑应用于数据集中的每一天。即在第 20 天(以及任何其他日期),它将查看过去 14 天的所有 bin 的值,然后使用该数据范围在 Bin 中聚合。这是数据外观的屏幕截图示例:

在此处输入图像描述

一个使用结构化数据的简单示例,只有 3 个 Bins、1 个 Lane 和 3 个数据点/日期回顾:

Lane    Date        Bin KG
AMS-ORD 2018-08-26  3   10
AMS-ORD 2018-08-29  1   25
AMS-ORD 2018-08-30  2   30
AMS-ORD 2018-09-03  2   20
AMS-ORD 2018-09-04  1   40

注意这里的 KG 是一个总和。同样这是一天(也就是今天),但我希望我的数据集中的每个日期都遵循相同的逻辑。输出如下所示:

Lane    Date        Bin KG  Average
AMS-ORD 2018-09-04  1   40   13.33 
AMS-ORD 2018-09-04  2   50   16.67 
AMS-ORD 2018-09-04  3   0    -   

我弄乱了 .rolling(14).mean()、.tail() 和其他一些。我遇到的问题是为正确的 Bin 聚合指定正确的日期范围。

标签: pythonpandasgroup-bymoving-average

解决方案


推荐阅读