熊猫:非唯一的多索引DataFrame到面板

时间:2019-06-12 00:35:47

标签: python pandas dataframe panel multi-index

熊猫:非唯一的多索引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

0 个答案:

没有答案