Python 如何对多索引数据帧进行上采样?

Python 如何对多索引数据帧进行上采样?,python,pandas,multi-index,Python,Pandas,Multi Index,我有一个多索引数据帧,其中一个级别有一个日期时间索引 dates = pandas.date_range('20180101', periods=10) index = pandas.MultiIndex.from_product([dates, list('ABC')]) df = pandas.DataFrame(index=index, columns=list('1234'),

我有一个
多索引
数据帧
,其中一个级别有一个
日期时间索引

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

在它被弃用之前,我可以使用
面板
,每个日期有一个
数据框
,来表示我的数据集

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()

我如何在一个内存高效的庄园中对我的
多索引数据框进行上采样?

出于好奇,您的数据框有多大(有多少天,有多少列)?作为一个面板:
维度:2568(项目)x 7(长轴)x 7(短轴)
-这就是2568天,每个数据帧有7行x 7列。最终数据帧的大小应至少为
24*60*2568*7*7*8/1024**3
,约为1.3 Gb(假设大部分数据为浮点数据)。你的RAM有多少存储空间?@Zuma我有16GB。当我在数据帧上运行重采样操作时,我可以看到内存使用量随着时间的推移而增加,直到我的机器开始疯狂地交换,最终出现了
MemoryError
。我觉得奇怪的是,你的所有16 Gb内存都被这台机器使用了。我看到的唯一其他选择是将数据帧分割成块,对块进行上采样,然后将它们合并回来