7天窗口,跳过日期

时间:2014-11-19 17:47:58

标签: python pandas time-series

我拥有300个体育馆的数据,并且在体育场内,每个日期都有游客的访客数量。每天都没有比赛。

对于每个体育场,我想要制作一个系列,给出7天的访客总数。我希望该系列的跨度尽可能小,以便系列在第一场比赛开始前7天开始,并在上一场比赛结束时结束。

这是一个特定体育场的数据:

Game_date
2013-05-20    122
2013-06-27    350
2013-10-08    105
2013-10-10    100
2013-12-22    165
2013-12-24     55
2014-01-05    321
2014-01-06     71
2014-01-07    199

我想要输出的示例:

Date
...
2014-01-03    0
2014-01-04    0
2014-01-05    321
2014-01-06    392
2014-01-07    591

2 个答案:

答案 0 :(得分:2)

查看rolling_sum功能。这是你的例子:

In [48]: pd.rolling_sum(df, window=7, freq='D', min_periods=1)
Out[48]:
            Game_date
2013-05-20        122
2013-05-21        122
2013-05-22        122
...
2014-01-04        NaN
2014-01-05        321
2014-01-06        392
2014-01-07        591

如果您不喜欢.fillna(0),可以添加NaN

答案 1 :(得分:0)

我认为在应用滚动总和之前需要重新采样数据。我假设起始数据框由pandas日期索引。

df  = df.resample('D').fillna(0)
print df.tail()


            seats
game_date        
2014-01-03      0
2014-01-04      0
2014-01-05    321
2014-01-06     71
2014-01-07    199

以便用零填充所有缺少的日期。现在我们可以申请滚动金额。

print pd.rolling_sum( df, 7 ).tail()

            seats
game_date        
2014-01-03      0
2014-01-04      0
2014-01-05    321
2014-01-06    392
2014-01-07    591