import numpy as np
from pandas import *
randn = np.random.randn
data = { 'Label1' : Panel({ 'Item1' : DataFrame(randn(4, 3)) }),
'Label2' : Panel({ 'Item2' : DataFrame(randn(4, 2)) }) }
p4d = Panel4D(data)
子面板'Label1'
不应包含数据框'Item2'
,但我会获得'Item1'
的副本:
In [29]: p4d.ix['Label1','Item1',:,:]
Out[29]:
0 1 2
0 0.283740 0.123377 0.122482
1 0.756958 0.618638 -1.732440
2 0.070798 -0.621752 -0.196360
3 0.462558 -1.023808 0.234144
In [30]: p4d.ix['Label1','Item2',:,:]
Out[30]:
0 1 2
0 0.283740 0.123377 0.122482
1 0.756958 0.618638 -1.732440
2 0.070798 -0.621752 -0.196360
3 0.462558 -1.023808 0.234144
,反之亦然'Label2'
和'Item1'
。
为什么Panel4d的功能是这样的?
我更喜欢空数据帧(或至少一个用NaN填充)而不是副本。有没有办法做到这一点?
答案 0 :(得分:0)
原来这是一个错误。完全重新索引(例如,提供所有轴)Panel或更高的暗淡对象时显示。显示0.13及更低版本。该报告在此处,错误修复将在0.13.1中。 https://github.com/pydata/pandas/issues/5905
您可以先创建一个重新编制索引的Panel
来解决此问题In [15]: items = ['Item1','Item2']
In [17]: p1 = Panel({ 'Item1' : DataFrame(randn(4, 3)) }).reindex(items=items)
In [18]: p2 = Panel({ 'Item2' : DataFrame(randn(4, 2)) }).reindex(items=items)
In [26]: p4d = pd.Panel4D({ 'Label1' : p1, 'Label2' : p2 })
In [27]: p4d.ix['Label1','Item1']
Out[27]:
0 1 2
0 1.974462 -0.916765 -0.577381
1 0.378009 0.047688 -0.281828
2 -0.288759 0.697560 -0.074013
3 -0.124308 0.908857 -0.042192
[4 rows x 3 columns]
In [28]: p4d.ix['Label1','Item2']
Out[28]:
0 1 2
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
[4 rows x 3 columns]