假设我有这样的df:
| 编号| 日期 | 目标行|
| 1| 2016-01-01 | 0|
| 1| 2016-02-01 | 0|
| 1| 2016-03-01| 0|
| 1 | 2016-04-01| 0|
| 1| 2016-05-01| 1|
| 1| 2016-06-01| 0|
| 1| 2016-07-01| 0|
| 1| 2016-08-01| 0|
我的任务是检查接下来的 4 个target_row值是否为 1 - 包括当前值,因此它应该是 1。( groupby('id') is needed
)。
所以希望输出这个:| 编号| 日期 | 目标行|下一个_6_目标
| 1| 2016-01-01 | 0| 0
| 1| 2016-02-01 | 0| 1
| 1| 2016-03-01| 0| 1
| 1 | 2016-04-01| 0| 1
| 1| 2016-05-01| 1| 1
| 1| 2016-06-01| 0| 0
| 1| 2016-07-01| 0| 0
| 1| 2016-08-01| 0| 0
我试过这种方式: df['next_6_target'] = df.groupby('id').rolling(window=6)[['target_row']].max().reset_index(drop=True)
然后执行移位 - 但它给出了错误的结果
在 SQL 解决方案中应该是这样的:
MAX(target_row) OVER (PARTITION BY ID ORDER BY DATE ROWS BETWEEN CURRENT ROW AND 3 FOLLOWING)
HUX布斯
达令说
相关分类