熊猫:非唯一的多索引DataFrame到面板
我是熊猫新手。有没有一种方法可以将非唯一的多索引转换为保留非唯一数据的Panel? Panel似乎已被弃用,但较旧的库需要使用我们需要从多索引数据框创建的Panel。
示例代码:
> arrays=
[numpy.array(['a','a','b','b']),numpy.array(['one','one','one','two'])]
> df = pandas.DataFrame(numpy.random.randn(4,2),index=arrays)
> print df
> df
0 1
a one 1.167011 0.008832
one 0.253517 1.101717
b one -2.666648 1.327103
two 0.160127 -0.186646
>df.to_panel()
ValueError: Can't convert non-uniquely indexed DataFrame to Panel.
不幸的是,我们无法控制多重索引的唯一性。有没有一种方法可以通过非唯一的多索引创建面板,类似于通过Panel-> Multi-index-> Panel进行转换的方式,其中面板具有非唯一的major_axis标签(在示例下方)。还是我们需要遍历多索引数据帧的值,并使用非唯一的major_axis,minor_axis,items构建3维numpy数组,然后传递给pd.Panel构造函数?任何帮助表示赞赏...
>minor_axis=['one','two']
>major_axis=['a','a','b']
>panel = pandas.Panel(numpy.random.randn(2,3,2), major_axis=major_axis,
minor_axis=minor_axis) # Panel is created with non-unique index labels
>panelFrame = panel.to_frame() # Panel to MI
>panelFrame.to_panel() # MI to Panel retains non-unique index.
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 3 (major_axis) x 2 (minor_axis)
Items axis: 0 to 1
Major_axis axis: a to b
Minor_axis axis: one to two