在 python 中,获取数据帧中相对于每行的特定日期窗口内的唯一行数的最佳方法是什么?



给定一个数据框,如下面的前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

最新更新