Как вставить столбец второго уровня и значение в Pandas DataFrame, сохраняя его в соответствии со столбцом первого уровня? - PullRequest
0 голосов
/ 28 января 2020

Приведенный ниже код создает соответствующий Pandas DataFrame:

import pandas as pd

columns_index = pd.MultiIndex.from_arrays([['Apple','Apple','Banana'], ['Light_Green','Red','Yellow']])
df = pd.DataFrame(data=None,columns=columns_index,index=[1])
df.loc[:,('Apple','Light_Green')] = 10
df.loc[:,('Apple','Red')] = 0
df.loc[:,('Banana','Yellow')] = 5


    Apple           Banana
    Light Green Red Yellow
1   10          0   5

Затем я запускаю следующий код, чтобы вставить новое значение (и новый заголовок столбца первого уровня в DataFrame):

df.loc[:,('Apple','Dark_Green')] = 1

При этом создается DataFrame с данными, упорядоченными следующим образом:

    Apple           Banana  Apple
    Light_Green Red Yellow  Dark_Green
1   10          0   5       1.0

Как вставить это значение (и новый заголовок столбца первого уровня) в DataFrame в большинстве Pythoni? c и убедитесь, что заголовок Dark_Green находится в категории Apple, так что DataFrame выглядит следующим образом:

    Apple                       Banana
    Light_Green Red Dark_Green  Yellow
1   10          0   1           5

Есть ли другой способ для вставки данных или этот метод в порядке, с каким-то кодом, развернутым для повторной сортировки DataFrame после наилучшего подхода?

Примечание: мне особенно нужно, чтобы DataFrame динамически настраивалась снова и снова, поэтому создание DataFrame с самого начала с заголовком Dark_Green это не решение.

Спасибо!

1 Ответ

2 голосов
/ 28 января 2020

Делать с sort_index

df=df.sort_index(level=0,axis=1)
       Apple                 Banana
  Dark_Green Light_Green Red Yellow
1        1.0          10   0      5
...