【发布时间】:2021-11-26 14:10:47
【问题描述】:
我有以下数据框,按 ID 和日期排序:
df :
ID Date
A 2019-01-02
A 2019-02-09
A 2019-02-20
A 2019-02-27
A 2019-03-16
A 2019-03-29
A 2019-04-17
A 2019-04-19
A 2019-05-26
A 2019-06-12
B 2017-01-01
B ...
我想要的是,当我遇到一行时,删除所有在接下来的 40 天内具有日期的行,并从我遇到的下一个(未删除的)行开始重复。我希望每个 ID 都有。
例如 ID=A :
- 我遇到第一行,日期是
2019-01-02。 40 天后是2019-02-11,所以我严格删除这两个日期之间的所有日期行。所以第二行被删除(日期=2019-02-09) - 然后,我查找带有
Date >= 2019-02-11的下一行(2019-02-11是前40 天期限的结束)。我找到第三行,日期 =2019-02-20。这是现在的参考日期,40 天后是2019-04-01。所以第 4、5、6 行被删除了 - ...
请注意,当我遇到新行并且当前没有 40 天期限处于活动状态时,我的 40 天期限开始了。因此,并非所有 ID 的这些周期都相同。
这给出了以下输出数据集
ID Date
A 2019-01-02
A 2019-02-20
A 2019-04-17
A 2019-06-12
B 2017-01-01
B ...
提前致谢
【问题讨论】:
-
您的问题含糊不清,考虑改写
-
@Luke 很难将所有细节都放在标题中。这就是为什么我将示例放在问题中,真正详细说明了问题。我找不到合适的标题,而不是“太模糊”,如果您有任何建议,我愿意提供建议
-
所以您要确保您的数据框在 40 天内只有一个 ID 实例?
-
是的,但是周期不固定,当我遇到一行时开始(此行日期是 40 天周期的开始日期)并且没有其他 40 天周期处于活动状态。
-
我怎么知道哪一行开始了句号? (问题不清楚)