Python 跳过日期的7天窗口
我有300个体育场的数据,在一个体育场内,我有每场比赛日期的观众人数。不是每天都有比赛 对于每个体育场,我想生成一个系列,提供7天的滚动游客总数。我希望这个系列赛的跨度尽可能小,这样系列赛就可以在第一场比赛前7天开始,到最后一场比赛结束 这是一个特定体育场的数据:Python 跳过日期的7天窗口,python,pandas,time-series,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
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
查看函数。对于您的示例来说,这是一条单行线:
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
如果您不喜欢
NaN
s,可以添加.fillna(0)
。我认为在应用滚动和之前需要对数据进行重新采样。我假设起始数据帧由一个日期索引
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
您提出了一个非常好的问题,并附有您的输入和预期输出的示例。这有助于更容易回答。很好!我知道这类东西有一个函数。感谢您使用
min_periods=1
有深刻见解!我刚刚学到了一些东西。谢谢