Давайте дадим следующий фрейм данных с многоиндексными столбцами
import numpy as np
import pandas as pd
a = ['i', 'ii']
b = list('abc')
mi = pd.MultiIndex.from_product([a,b])
df = pd.DataFrame(np.arange(100,100+len(mi)*3).reshape([-1,len(mi)]),
columns=mi)
print(df)
# i ii
# a b c a b c
# 0 100 101 102 103 104 105
# 1 106 107 108 109 110 111
# 2 112 113 114 115 116 117
Используя .loc[]
и pd.IndexSlice
Я пытаюсь выбрать столбцы 'c'
и 'b'
в том же порядке.
idx = pd.IndexSlice
df.loc[:, idx[:, ['c','b']]]
Однако, если я посмотрю на вывод, запрошенный порядок не будет соблюден!
# i ii
# b c b c
# 0 101 102 104 105
# 1 107 108 110 111
# 2 113 114 116 117
Вот мои вопросы:
- Почемупорядок, не сохраненный пандами?Я считаю это довольно опасным, поскольку список
['c', 'b']
подразумевает упорядочение с точки зрения пользователя. - Как получить доступ к столбцам через
loc[]
, сохраняя при этом упорядочение одновременно?