У меня проблема с назначением мультииндекса, и я хотел бы сохранить значения, как показано ниже.

У меня есть функция df_x , которая представляет собой фрейм данных и выглядит так:

print df_x

serial    P1       P2       P3

5         21       32       35
10        33       45       76
15        65       99       563 

Я хотел бы хранить его следующим образом

Например, для уровня [0] значения альфа

df1 = pd.DataFrame(columns= df_x.columns)

Он должен создать мультииндекс df1 , чтобы

Print df1 должен выглядеть так

print df1


alpha    serial    5     10    15

         P1        21    33    65

         P2        32    45    99

         P3        35    76    563 

Однако я изо всех сил пытаюсь создать мультииндекс в исходном фрейме данных df_x

Любая помощь будет высоко оценена.

1
abhi_phoenix 1 Авг 2017 в 23:20

1 ответ

Лучший ответ

Вариант 0

pd.concat([df_x], keys=['alpha'])

serial    P1  P2   P3
alpha 5   21  32   35
      10  33  45   76
      15  65  99  563

Вариант 1

pd.DataFrame(
    df_x.values,
    [['alpha'] * len(df_x), df_x.index],
    df_x.columns
)

serial    P1  P2   P3
alpha 5   21  32   35
      10  33  45   76
      15  65  99  563

Вариант 2

df_x.set_index(
    pd.MultiIndex.from_product(
        [['alpha'], df_x.index], names=[None, df_x.index.name]
    )
)

Настройка

df_x = pd.DataFrame(**{
    'columns': pd.Index(['P1', 'P2', 'P3'], name='serial'),
    'data': [[21, 32, 35], [33, 45, 76], [65, 99, 563]],
    'index': [5, 10, 15]})
1
piRSquared 1 Авг 2017 в 23:39
Спасибо. Я ценю это.
 – 
piRSquared
1 Авг 2017 в 23:55