python - 是否可以使重新采样中的移动窗口从最近的日期开始?
问题描述
我在 Pandas 数据框中有以下数据集:
id date value
1 2019-01-31 10
1 2019-02-28 15
1 2019-03-31 8
2 2019-01-31 20
2 2019-03-31 10
假设我想计算每个 id前两个月的累积总和,同时考虑数据中的差距(例如缺失的月份)。在示例中,每个 id 的起点应该是最近的日期:2019-03-31。
期望的结果是
id date value
1 2019-03-31 23
2 2019-03-31 10
我写的代码试图做到这一点是
df.set_index('date').groupby('id')['value'].resample('2M').sum()
这使
value
id date
1 2019-01-31 10
2019-03-31 23
2 2019-01-31 20
2019-03-31 10
当我尝试获取三个月的累积总和时,我得到的结果如下:
df.set_index('date').groupby('id')['value'].resample('3M').sum()
value
id date
1 2019-01-31 10
2019-04-30 23
2 2019-01-31 20
2019-04-30 10
预期结果应该在哪里
value
id date
1 2019-03-31 33
2 2019-03-31 30
关于如何实现这一点的任何想法?
熊猫版本:'0.25.1'
解决方案
正如user3483203
使用所建议的那样closed='left'
。把它放在这里以便您可以关闭问题(请让 user3483203 输入他的建议作为答案,以便您接受它)
df.set_index('date').groupby('id')['value'].resample('3M',closed='left').sum().reset_index(name='value')
输出
id date value
1 2019-04-30 33
2 2019-04-30 30
推荐阅读
- javascript - Intersection Observer API:观察视口的中心
- unix - Unix 显示学生记录
- python - 如何在 Python 中迭代字符串的长度时迭代字符串
- django-mptt - 使用 TreeManager 时 get_children() 方法出现问题。错误的结果
- c++ - 将具有面的对象旋转到另一个对象时出现问题。[C++]
- swift - 斯威夫特:字符串开始(带:) vs hasPrefix
- hive - 当 ACID 属性关闭时,如何更新外部 Hive 表中的行?
- java - 错误:java:无效标志:--add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED
- python - 在 python dict.get() 中引发异常
- sql-server - 通过 SQL 导入导出向导导出表时缺少目标服务器