Python 计算滚动窗口期间存在的日期索引行数

Python 计算滚动窗口期间存在的日期索引行数,python,pandas,Python,Pandas,例如,我有一个熊猫数据框,它代表了我在2016年进行训练的所有日子。该日期表示为DateTime64[ns] 我想要生成的是一个从2016年1月1日到2016年12月30日的时间序列,其中任意一天(例如2016年3月30日)的值等于我在之前六天内执行练习[3月24日至30日]的天数,每天练习一行将出现在原始数据框中 我想不出一个好的pythonic/矢量化方法来定义新的数据帧来进行计数。它的索引将是2016年1月1日到2016年12月31日,但我看不出如何很好地定义“计数”列。我真的很想避免一些

例如,我有一个熊猫数据框,它代表了我在2016年进行训练的所有日子。该日期表示为DateTime64[ns]

我想要生成的是一个从2016年1月1日到2016年12月30日的时间序列,其中任意一天(例如2016年3月30日)的值等于我在之前六天内执行练习[3月24日至30日]的天数,每天练习一行将出现在原始数据框中


我想不出一个好的pythonic/矢量化方法来定义新的数据帧来进行计数。它的索引将是2016年1月1日到2016年12月31日,但我看不出如何很好地定义“计数”列。我真的很想避免一些讨厌的循环/迭代结构。

你需要
将你的数据帧重新索引到一年中的所有日子,这样你就可以得到你没有执行这个练习的所有日子。然后使用
滚动求和

month = [np.random.randint(1,12) for _ in range(0,100)]
day = [np.random.randint(1,28) for _ in range(0,100)]
date = [datetime(2016, x, y) for x,y in zip(month, day)]
date = sorted(set(date))
values = [1]*len(date)
df = pd.DataFrame({'exercise': values}, index=date) # generate random data

all_dates = pd.date_range("1/1/2016", "12/31/2016")
df = df.reindex(all_dates) # reindex to get missing days
result = pd.rolling_sum(df, window=6, min_periods=1)