我现在意识到实验板和物体会很好地满足我的需要,只是我似乎无法保存它们:
p4d = pd.Panel4D(np.random.randn(2, 2, 5, 4),
labels=['Label1','Label2'],
items=['Item1', 'Item2'],
major_axis=pd.date_range('1/1/2000', periods=5),
minor_axis=['A', 'B', 'C', 'D'])
p4d.save('p4d')
...
PicklingError: Can't pickle <class 'pandas.core.panelnd.Panel4D'>: attribute lookup pandas.core.panelnd.Panel4D failed
如果我试图将其写入hdf存储,我会得到:
^{pr2}$除了保存单独的数据帧并将它们缝合在一起,我如何持久化更高维的obects?在
编辑:我看到store.append()
适用于Panel4D,但save()
不适用于Panel5D,store.append()
对于示例Panel5D也不起作用。我真的追求的是高于4D,所以问题仍然存在。在
编辑:更多信息:
我试图创建一个任意维度的面板,在跨维度的嵌套循环中,然后能够再次任意地对数据进行切片,这样我就可以处理它(校对、绘图、优化)
(粗略)代码:
for a in range(1,10):
panel4ddict = {}
for b in range(101, 150):
paneldict = {}
for c in range(500, 501):
df = MakeDataFrame(a, b, c) # returns processed df
paneldict[c] = df
p3d = Panel(paneldict)
panel4ddict[b] = p3d
p4d = Panel4D(panel4ddict)
panel5ddict[a] = p4d
panel5d = Panel5D(panel5ddict)
sliced = panel5d[:,3,5:6]
# and then do some plotting of my sliced DF
这里有一种存储Panel5D的方法。实际上,您将每个Panel4D作为一个单独的组存储在存储中,然后在读回时重建。在
注意,最好将其存储为具有多个级别(3个或更多个)的数据帧,这些级别实际上包含与Panel5D相同的信息,但展开时间较长。在
相关问题 更多 >
编程相关推荐