Я создал Dataframe с мультииндексным с помощью другого Dataframe:Сортировать панда мультииндексного
arrays = [df['bus_uid'], df['bus_type'], df['type'],
df['obj_uid'], df['datetime']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['bus_uid', 'bus_type', 'type',
'obj_uid', 'datetime'])
multindex_df = pd.DataFrame(df['val'].values, index=index)
Это работало отлично, как описано в документации http://pandas.pydata.org/pandas-docs/stable/advanced.html.
В документации также говорится, что метки должны быть отсортированы для правильной работы функций индексирования и нарезки в разделе «Необходимость сортировки с помощью MultiIndex».
Но как-то
multindexed_df.sort_index(level=0)
или
multindexed_df.sort_index(level='bus_uid')
больше не работает и бросает TypeError: sort_index() получил неожиданный аргумент ключевое слово 'уровень'.
Подняв информацию об объекте на sort_index() это выглядит как «на» мой новый друг вместо «уровней»:
by:object
Column name(s) in frame. Accepts a column name or a list for a nested sort. A tuple will be interpreted as the levels of a multi-index.
Мой вопрос заключается в следующем: Как я могу сортировать мой мультииндексных так что все функции (нарезка и т. д.) работают правильно?
Моя ошибка! Я работал над версией 0.16.2 и теперь обновлен до 0.17.1. Так что просто применять * multindex_df.sort_index (inplace = True) * достаточно, чтобы получить все функциональные возможности? Спасибо! –
Нарезка из упорядоченного индекса теперь выдает ошибку: 1. «idx = pd.IndexSlice» 2. «subset = multindex_df.loc [idx [['el: DE22C'], ['el'], ['input' ],:,:]] «приносит» «KeyError:« MultiIndex Slicing требует, чтобы индекс был полностью lexsorted tuple len (5), глубина lexsort (0) »« –
Моя ошибка снова. Я забыл отсортировать индекс после воссоздания;) Спасибо вам большое! –