给定一个数据框,如下面的前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
这是表的简化版本;最终,我的DataFrame将有一个额外的id
列,我想找到在每个dt
的7天窗口中看到的不同dts
的数量,每个id
。我很高兴在每个id
( o(趋势))上进行迭代,如果整个数据集中没有解决方案。
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