Как я могу изменить порядок строк для многоиндексного фрейма данных в python?

#python #pandas

Вопрос:

Я хотел бы перейти от первого кадра данных ко второму? Как я могу это сделать? Невозможно изменить структуру фрейма данных заранее.

введите описание изображения здесь

введите описание изображения здесь

Фиктивный Код:

 index1 = [("x","1"), ("x","3"), ("x","5"), ("y","1"), ("y","3")]
data = pd.DataFrame(index = pd.MultiIndex.from_tuples(index1), columns = ["A","B"])
data.loc[("x","sum"),:] = [19,10]

index2 = [("x","1"), ("x","3"), ("x","5"), ("x","sum"), ("y","1"), ("y","3")]
data2 = pd.DataFrame(index = pd.MultiIndex.from_tuples(index2), columns = ["A","B"])
 

Комментарии:

1. Ты имеешь в виду sort_index ?

Ответ №1:

Вы можете sort_index с помощью level=0 :

 data.sort_index(level=0)

         A    B
x 1    NaN  NaN
  3    NaN  NaN
  5    NaN  NaN
  sum   19   10
y 1    NaN  NaN
  3    NaN  NaN
 

Комментарии:

1. Спасибо, но что я могу сделать, чтобы мой заказ остался прежним для уровня 0 ?

2. @ManuelK вам нужно применить категориальный индекс с пользовательским заказом.

3. @ManuelK ты забыл назначить его обратно data ? data = data.sort_index(level=0)

4. @ManuelK Или сортировка на месте: data.sort_index(level=0, inplace=True)