微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pandas.DataFrame.rolling 根据 Id 和时间索引将当前行值和接下来的 2 行值相加到第一行的值

如何解决pandas.DataFrame.rolling 根据 Id 和时间索引将当前行值和接下来的 2 行值相加到第一行的值

目标

我想根据 ID 和时间索引将当前行值和接下来的 2 行值与第一行值相加。时间索引以3天的窗口向前移动,而总和值只能具有相同的ID

当前不正确的功能

  • 第一行值 SUMMED VALUE = 第一行值
  • 第 2 行值 SUMMED VALUE = 第 1 行值 + 第 2 行值
  • 第 3 行值 SUMMED VALUE = 第 3 行值 + 第 2 行值 + 第 1 行值

代码

gr = current_df.groupby("id").rolling('3D').rolling_sum_3.sum()
final_dataframe = pd.DataFrame(gr)

输出

enter image description here

目标如下

  • A.) 第 1 行值 SUMMED VALUE = 第 3 行值 + 第 2 行值 + 第 1 行值
  • B.) 如果此 ID 和 3 天时间范围内没有第 2 行或第 3 行值,只需将此字段保留为 NaN 值
  • A.) 第 2 行值 SUMMED VALUE = 第 2 行值 + 第 3 行值 + 第 4 行值
  • B.) 如果此 ID 和 3 天时间范围内没有第 3 行或第 4 行值,只需将此字段保留为 NaN 值

我试过了

解决方法

  • 反转系列,然后使用 3 的滚动窗口求和。
  • 后向滚动总和将成为前向滚动总和,因为您颠倒了排序顺序

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。