我有一个MultiIndex
DataFrame
,其中一个级别的DateTimeIndex
。
dates = pandas.date_range('20180101', periods=10)
index = pandas.MultiIndex.from_product([dates, list('ABC')])
df = pandas.DataFrame(index=index,
columns=list('1234'),
data=numpy.random.randn(30,4))
我想对此进行升采样以进行细微的向前填充。
我发现了以下方法
df.unstack().resample('T').ffill().stack()
df = df.groupby(pandas.Grouper(freq='T', level=0)).ffill()
但是,两者都占用大量内存,而使用我的数据集,我得到的是MemoryError
。
在弃用之前,我可以使用Panel
表示我的数据集,每个日期使用一个DataFrame
pnl = pandas.Panel(items=dates,
major_axis=list('ABC'),
minor_axis=list('1234'),
data=numpy.random.rand(120).reshape(10,3,4))
对面板进行超采样非常简单:
pnl = pnl.resample('T').ffill()
如何在内存高效的庄园中对MultiIndex DataFrame
进行升采样?