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内存都被这台机器使用了。我看到的唯一其他选择是将数据帧分割成块,对块进行上采样,然后将它们合并回来