我現在認識到實驗PanelND對象要出色地滿足我的需求,但它似乎我不能將它們保存:可以保存Panel4d和PanelND對象嗎?
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
如果我嘗試將其寫入到一個HDFStore,我得到:
TypeError: cannot properly create the storer for: [_STORER_MAP] [group->/p4d (Group) u'',value-><class 'pandas.core.panelnd.Panel4D'>,table->None,append->False,kwargs->{}]
除了保存單個DataFrames並將它們拼接在一起,我如何堅持更高維的obects?
編輯:我看到store.append()
適用於Panel4D,但save()
不適用,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
你只能保存一個Panel4D作爲表(追加工程)。舉例說明你正在嘗試做什麼 – Jeff
HDFStorr沒有直接啓用大於4dim,你想存儲什麼,更重要的是你想如何檢索它?例如,你在做什麼樣的查詢? – Jeff