При создании MultiIndex
с использованием уровней from_product()
или from_arrays()
будут отсортированы, поскольку оба метода используют _factorize_from_iterables()
, который возвращает отсортированные индексы.
>> list(_factorize_from_iterables([["b", "a"], [20, 10]]))
[[array([1, 0], dtype=int8), array([1, 0], dtype=int8)],
[Index(['a', 'b'], dtype='object'), Int64Index([10, 20], dtype='int64')]]
MultiIndex.from_tuples()
также будет иметь отсортированные уровни, поскольку он использует from_arrays()
для внутреннего использования.
Если вы установите MultiIndex
без указания метода, уровни не будут отсортированы.
>> midx = pd.MultiIndex(levels=[['b', 'a'], [20, 10]],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]])
>> df = pd.DataFrame(np.random.randn(4,4), columns=midx)
>> df.columns
MultiIndex(levels=[['b', 'a'], [20, 10]],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]])
Выше используется pandas
версия 0.22.0
(выпущена 29 декабря 2017 г.) и тестируется на версии 0.23.4
(последняя версия).