Панды: переупорядочить столбцы сводной таблицы в произвольном порядке - PullRequest
0 голосов
/ 05 декабря 2018

Предположим, у меня есть сводная таблица, которая выглядит следующим образом:

                             completed_olns                  total_completed_olns
work_type                             A     B          C                     
employee                                                                     
Employee1                            94  1163          1                 1258
Employee2                           168   770          4                  942
Employee3                           173   746          8                  927

Как переставить столбцы A, B, C в произвольный порядок, например B, A, C?

Эти данные выводятся из базы данных и считываются через csv с pd.read_csv()

Я пробовал pivot.sort_index(level=1, axis=1, ascending=False), что приближает меня, но не к тому, что мне нужно.

Я также попробовал pivot = pivot[['B', 'A', 'C']], что дает мне:

KeyError: "['B', 'A', 'C'] not in index"

Это два наиболее распространенных предложения, которые я нашел.

1 Ответ

0 голосов
/ 05 декабря 2018

Используйте .reindex с аргументом level

Пример данных

import pandas as pd
import numpy as np

df = pd.DataFrame(data = np.random.randint(1,10,(3,6)))
df.columns = pd.MultiIndex.from_product([['collected', 'total_collected'], ['A','B','C']])
#  collected       total_collected      
#          A  B  C               A  B  C
#0         2  6  9               9  6  6
#1         5  4  4               5  2  6
#2         8  9  3               9  2  7

Код

df.reindex(axis=1, level=1, labels=['B', 'A', 'C'])
#  collected       total_collected      
#          B  A  C               B  A  C
#0         6  2  9               6  9  6
#1         4  5  4               2  5  6
#2         9  8  3               2  9  7

С группами, в которых отсутствуют метки или метки, которые никогда не существуют,он не вставит все NaN столбцы

df.iloc[:, :-1].reindex(axis=1, level=1, labels=['B', 'A', 'C', 'D'])
#  collected       total_collected   
#          B  A  C               B  A
#0         6  2  9               6  9
#1         4  5  4               2  5
#2         9  8  3               2  9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...