Как изменить порядок / группировку / уровень столбцов Pandas MultiIndex?

Я пытаюсь переупорядочить / swaplevel / pivot / something столбцы в кадре данных pandas. Столбцы – это MultiIndex, но я не могу найти соус, чтобы делать то, что хочу.

Самый быстрый переменный столбец в моем мультииндексе – месяц, но я бы хотел, чтобы это был самый медленный столбец.

У меня есть ноутбук nbviewer, если вы хотите попробовать сами: http://nbviewer.ipython.org/gist/flamingbear/4cfac24c80fe34a67474

Что у меня есть:

+-------------------------------------------------------------------+ |+-----+------+------+-----+------+-----+-----+------+-----+-----+ | || |weight |extent |rank || |+-----+------+------+-----+------+-----+-----+------+-----+-----+ | ||month|'1Jan'|'Feb' |'Mar'|'1Jan'|'Feb'|'Mar'|'1Jan'|'Feb'|'Mar'| | |+-----+------+------+-----+------+-----+-----+------+-----+-----+ | ||year | | | | | | | | | | | |+-----+------+------+-----+------+-----+-----+------+-----+-----+ | ||2000 |45.1 |46.1 |25.1 |13.442|14.94|15.02|13 |17 |14 | | |+-----+------+------+-----+------+-----+-----+------+-----+-----+ | ||2001 |85.0 |16.0 |49.0 |13.380|14.81|15.14|12 |15 |17 | | |+-----+------+------+-----+------+-----+-----+------+-----+-----+ | ||2002 |90.0 |33.0 |82.0 |13.590|15.13|14.88|15 |22 |10 | | |+-----+------+------+-----+------+-----+-----+------+-----+-----+ | ||2003 |47.0 |34.0 |78.0 |13.640|14.83|15.27|17 |16 |22 | | |+-----+------+------+-----+------+-----+-----+------+-----+-----+ | +-------------------------------------------------------------------+ 

Что я хочу

 +------------------------------------------------------------------+ |+-----+------+------+----+------+------+-----+------+------+----+ | ||month|1Jan |Feb |Mar || |+-----+------+------+----+------+------+-----+------+------+----+ | || |weight|extent|rank|weight|extent|rank |weight|extent|rank| | |+-----+------+------+----+------+------+-----+------+------+----+ | ||year | | | | | | | | | | | |+-----+------+------+----+------+------+-----+------+------+----+ | ||2000 |45.1 |13.442|13 |46.1 |14.94 |17 | 25.1 |15.02 |14 | | |+-----+------+------+----+------+------+-----+------+------+----+ | ||2001 |85.0 |13.380|12 |16.0 |14.81 |15 | 49.0 |15.14 |17 | | |+-----+------+------+----+------+------+-----+------+------+----+ | ||2002 |90.0 |13.590|15 |33.0 |15.13 |22 | 82.0 |14.88 |10 | | |+-----+------+------+----+------+------+-----+------+------+----+ | ||2003 |47.0 |13.640|17 |34.0 |14.83 |16 | 78.0 |15.27 |22 | | |+-----+------+------+-----------+------+-----+------+------+----+ | +------------------------------------------------------------------+ 

Любая помощь будет оценена по достоинству. Я могу работать с моим исходным DataFrame, но запись в CSV с желаемым заказом была бы фантастической.

Заранее спасибо, Мэтт

One Solution collect form web for “Как изменить порядок / группировку / уровень столбцов Pandas MultiIndex?”

Ваши столбцы – это MultiIndex. Вам нужно переназначить столбцы DataFrame новым MultiIndex, созданным из уровней замены существующего:

 df.columns = df.columns.swaplevel(0, 1) df.sortlevel(0, axis=1, inplace=True) >>> df month '1Jan' 'Feb' 'Mar' weight extent rank weight extent rank weight extent rank year 2000 45.1 13.442 13 46.1 14.94 17 25.1 15.02 14 2001 85.0 13.380 12 16.0 14.81 15 49.0 15.14 17 2002 90.0 13.590 15 33.0 15.13 22 82.0 14.88 10 2003 47.0 13.640 17 34.0 14.83 16 78.0 15.27 22 

Затем вы можете экспортировать в csv:

 df.to_csv(filename) 
  • Как правильно добавить часы к pandas.tseries.index.DatetimeIndex?
  • Pandas SQL chunksize
  • Создание частичной замены SAS PROC SUMMARY в Python / Pandas
  • Pandas HDFStore выбрать из вложенных столбцов
  • Чтение файла с разделителями табуляции с помощью Pandas - работает в Windows, но не на Mac
  • Построение гистограмм из сгруппированных данных в пандах DataFrame
  • Как применять функции качения в группе по объекту в пандах
  • Python Pandas DataFrame удаляет пустые ячейки
  • Python - лучший язык программирования в мире.