鉴于下面的前2列(count
& dt
)之类的数据框,我希望获得7天内看到的不同dts
的数量窗口导致(但不包括)每个dt
(例如num_distinct_dts_prior_7_days
中显示的内容)。
ix count dt num_distinct_dts_prior_7_days
0 6 2017-12-01 0
1 2 2017-12-02 1
2 2 2017-12-04 2
3 9 2017-12-05 3
4 4 2017-12-10 2
5 7 2017-12-14 1
6 2 2017-12-28 0
7 3 2017-12-29 1
这是表格的简化版本;最终,我的数据框会有一个额外的id
列,并且我想查找在每个dts
前的7天窗口中看到的不同dt
的数量,每个id
的。如果在整个数据集中没有适用的解决方案,我很乐意迭代每个id
( O(趋于数千))。
答案 0 :(得分:1)
3
将是7
数字范围的中位数,因此我们可以使用
df['expected'] = 3-(3 - df.groupby(df.index // 7).cumcount()).abs()
ix count dt num_distinct_dts_prior_7_days expected
0 0 6 2017-12-01 0 0
1 1 2 2017-12-02 1 1
2 2 2 2017-12-04 2 2
3 3 9 2017-12-05 3 3
4 4 4 2017-12-10 2 2
5 5 7 2017-12-14 1 1
6 6 2 2017-12-28 0 0
7 7 3 2017-12-29 1 0