Pandas: неуникальный мультииндексированный DataFrame to Panel - PullRequest
1 голос
/ 12 июня 2019

Pandas: неуникальный мультииндексированный DataFrame для Panel

Я новичок в Pandas.Есть ли способ конвертировать неуникальный мультииндекс в 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 (ниже образца).Или нам нужно перебрать значения многоиндексированного фрейма данных и построить 3-мерный массив с уникальными major_axis, minor_axis, items и передать их в конструктор 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
...