熊猫滚动:返回最小和最大日期,暴露总和



我正在尝试实现一个滚动窗口,并且正在努力解决最后一部分。 正如您在下面看到的,代码返回风险总和,附加到滚动窗口中的最后一个日期。 我还想要一个在窗口中也有第一个日期的列。 (它们是按日期排序的,但我最终在每个窗口的最小和最大日期以及曝光总和之后(。 尝试从索引中删除日期并对其使用 min 和 max 函数会产生此错误: 未实现错误:未实现此 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)

输出

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

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

因此,您可以:

  • 像您一样生成结果
  • 呼叫result2 = df.groupby(['ID1','ID2']).Date.shift(11)
  • 从结果的多索引中删除 2 个顶级并合并两个结果

最新更新