熊猫滚动:返回最小和最大日期,曝光总和

时间:2019-10-03 16:33:47

标签: python pandas rolling-computation

我正在尝试实现滚动窗口,并在最后一部分中苦苦挣扎。如下所示,该代码返回曝光总和,附加到滚动窗口中的最后一个日期。我还想要一列在窗口中也有第一个日期的列。 (它们是按日期排序的,但我最终要在每个窗口的最小和最大日期以及曝光总数之后)。尝试从索引中取出日期并对其使用min和max函数会产生以下错误: NotImplementedError:对此dtype datetime64 [ns]进行滚动的操作未实现

dates = pd.date_range('1/1/2018', periods=24, freq='M')
df = pd.DataFrame(
    {
        'ID1': ['A']*24,
        'ID2': ['B']*24,
        'Date': dates,
        'EXPOSURE':[1]*24
    }
)

df.set_index(['ID1','ID2','Date'], inplace=True)

result = df.groupby(['ID1','ID2']).rolling(12, min_periods = 12).sum()
result.head(100)

Output

1 个答案:

答案 0 :(得分:0)

滚动窗口上的操作实际上仅限于聚合函数 并且必须在数字上执行,而不是在日期

要规避此限制,请注意,从 您的大小为12的滚动窗口实际上是第11行之前的日期。

因此您可以:

    与您一样
  • 生成结果
  • 致电result2 = df.groupby(['ID1','ID2']).Date.shift(11)
  • 从结果的 的MultiIndex中删除2个顶层,并合并两个结果。