考虑假期和周末的重新采样 DataFrame

Resampling DataFrame accounting for holidays and weekends

我刚开始玩 Python 和 Pandas,到目前为止总共投入了大约 10 个小时。我有一个每日库存数据的数据框,并且每周对其进行重新采样。问题在于星期五是假期的几周,我的数据集中得到 NaN 。有没有办法适应这种情况? (同样的问题,当我每月重新采样时,最后一天是周末)。

sample = 'W-FRI'
for i in range(tickerCount):
    datalist.append(yf.download(stock_list[i], start, end))
    datalist[i]['High'] = datalist[i]['High'].resample(sample).max()
    datalist[i]['Low'] = datalist[i]['Low'].resample(sample).min()
    datalist[i]['Open'] = datalist[i]['Open'].resample(sample).first()
    datalist[i]['Close'] = datalist[i]['Close'].resample(sample).last()
    datalist[i] = datalist[i].asfreq(sample, method='pad')

如您所见,未能正确采样耶稣受难日这一周。我知道可以从数据框中删除这些:

    datalist[i] = datalist[i][datalist[i]['High'].notna()]

但理想情况下,我想获取指定重采样期间的最后一天的数据(在这种情况下,使用星期四的数据。我看过 答案

有办法做到这一点吗?

编辑:

@ElliottCollins 有一个想法,使用 .ffill() 用之前的数据(从周四开始)回填周五。这也会在每个星期六和星期日用以前的数据回填。不幸的是,当我这样做然后重新采样 W-FRI 时,我的 Open 值不正确;他们成为上周五的开盘而不是周一的开盘

编辑 2

我刚刚意识到,如果我在这一切之后再次设置索引,我就可以根据需要重新采样。我将post下面的解决方案

感谢@ElliottCollins 关于回填数据的提示。

datalist[i] = datalist[i].ffill()

这也会回填周末,这是我不想要的。所以我需要从索引

创建一个列
datalist[i] = datalist[i].reset_index()

然后删除周末

datalist[i] = datalist[i][datalist[i]['Date'].dt.dayofweek < 5]

我需要将日期列重置为稍后转换的索引,所以

datalist[i] = datalist[i].set_index('Date')

而且我能够有效地获取我需要的数据