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

时间:2017-12-19 05:44:24

标签: python pandas dataframe

鉴于下面的前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(趋于数千))。

1 个答案:

答案 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