我有一个大型数据集,包括许多Pandas面板,沿主轴有时间。 Pandas concat方法允许连接面板,使得短轴共享一个共同的时间索引,这正是我所需要的。缺少值可以方便地替换为NaN。
dat1 = np.random.randn(1, 3, 3)
pan1 = pd.Panel(dat1,
items=['One'],
major_axis=pd.date_range('1/1/2000', periods=3),
minor_axis=['A', 'B', 'C'])
dat2 = np.random.randn(1, 3, 3)
pan2 = pd.Panel(dat2,
items=['Two'],
major_axis=pd.date_range('1/2/2000', periods=3),
minor_axis=['A', 'B', 'C'])
panc = pd.concat([pan1, pan2])
以下切片提供了我想要实现的数据访问类型。
panc.loc['One',:,:]
panc.loc[:,:,'A']
问题是我有非常多的面板,每个面板都有数千个数据点。我预计最终一个顺序连接的面板将使我可用的内存饱和。因此,我希望使用Pandas HDFStore将面板数据存储在HDF5文件中。
store = pd.HDFStore('store.h5',)
store.put('panc', panc, format='table')
上述命令适用于预连接的面板,但我无法弄清楚如何连接到商店中的现有面板。我的问题是:
是否可以按顺序连接商店中的面板,类似于上面的Pandas concat示例? (我无法用HDFStore追加方法实现这一点,可能是因为我不太了解追加是如何工作的。)
是否有另一种更智能的方法将数据存储在HDF5文件中,该文件在共同的主轴(时间)上提供我需要的组织,同时允许访问数据,就好像它们存储为面板一样?