Reorder levels of MultiIndex in a pandas DataFrame

AJG519

I have a DataFrame that looks something like this:

>>> df = pd.DataFrame(index=pd.MultiIndex.from_tuples([(num,letter,color) 
                    for num in range(1,3) 
                    for letter in ['a','b','c'] for color in ['Red','Green']], 
                    names=['Number','Letter','Color']))
>>> df['Value'] = np.random.randint(1,100,len(df))
>>> df
                     Value
Number Letter Color       
1      a      Red       97
              Green     61
       b      Red       97
              Green     98
       c      Red       91
              Green     47
2      a      Red       17
              Green     63
       b      Red       26
              Green     73
       c      Red       34
              Green     68

But I actually want my index to be ordered 'Letter, Color, Number'.

I currently do this as follows:

>>> df.reset_index().set_index(['Letter','Color','Number'])
                     Value
Letter Color Number       
a      Red   1          97
       Green 1          61
b      Red   1          97
       Green 1          98
c      Red   1          91
       Green 1          47
a      Red   2          17
       Green 2          63
b      Red   2          26
       Green 2          73
c      Red   2          34
       Green 2          68

Is this the best approach?

Alex Riley

It's better to use reorder_levels to manipulate the order of MultiIndex levels. Just pass in a list of the level names/numbers in the order you want:

>>> df.reorder_levels(['Letter','Color','Number'])
                     Value
Letter Color Number       
a      Red   1          41
       Green 1          56
b      Red   1          43
       Green 1          42
c      Red   1          89
       Green 1          18
a      Red   2          55
       Green 2          93
b      Red   2          64
       Green 2           9
c      Red   2          21
       Green 2          93

There's also swaplevel if you simply want to swap the positions of two levels.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Pandas dataframe with multiindex column - merge levels

From Java

Select rows in pandas MultiIndex DataFrame by giving values for several (but not all) levels

From Dev

Pandas MultiIndex (more than 2 levels) DataFrame to Nested Dict/JSON

From Dev

Resampling over dates in both levels of a MultiIndex Pandas DataFrame

From Dev

Converting a Pandas datetime index on a DataFrame object to *MultiIndex* with the levels "month" and "year"

From Dev

how to slice MultiIndex DataFrame with dependent levels of MultiIndex

From Dev

sort dataframe by a subset of levels in a multiindex

From Dev

How to access multiindex levels in pandas?

From Dev

Reorder pandas groupby dataframe

From Dev

Reorder pandas groupby dataframe

From Dev

How do you update the levels of a pandas MultiIndex after slicing its DataFrame?

From Dev

Combinations of MultiIndex levels which occur in a DataFrame

From Dev

concatinate pandas dataframe to multiindex

From Dev

reindex multiindex pandas dataframe

From Java

Pandas Dataframe Multiindex Merge

From Dev

Pandas multiIndex DataFrame sort

From Dev

pandas indexing in multiindex dataframe

From Dev

Merge pandas DataFrame with MultiIndex

From Dev

Building MultiIndex in Pandas DataFrame

From Dev

MultiIndex Pandas From Dataframe

From Dev

Pandas MultiIndex DataFrame Sorting

From Dev

Pandas Dataframe Multiindex Merge

From Dev

Indexing with multiindex dataframe in pandas

From Dev

Resampling a pandas MultiIndex dataframe

From Dev

Update a Pandas MultiIndex DataFrame

From Dev

Pandas Get All Values from Multiindex levels

From Dev

Merge two MultiIndex levels into one in Pandas

From Dev

Pandas Get All Values from Multiindex levels

From Dev

Reorder pandas DataFrame with specific rules

Related Related

  1. 1

    Pandas dataframe with multiindex column - merge levels

  2. 2

    Select rows in pandas MultiIndex DataFrame by giving values for several (but not all) levels

  3. 3

    Pandas MultiIndex (more than 2 levels) DataFrame to Nested Dict/JSON

  4. 4

    Resampling over dates in both levels of a MultiIndex Pandas DataFrame

  5. 5

    Converting a Pandas datetime index on a DataFrame object to *MultiIndex* with the levels "month" and "year"

  6. 6

    how to slice MultiIndex DataFrame with dependent levels of MultiIndex

  7. 7

    sort dataframe by a subset of levels in a multiindex

  8. 8

    How to access multiindex levels in pandas?

  9. 9

    Reorder pandas groupby dataframe

  10. 10

    Reorder pandas groupby dataframe

  11. 11

    How do you update the levels of a pandas MultiIndex after slicing its DataFrame?

  12. 12

    Combinations of MultiIndex levels which occur in a DataFrame

  13. 13

    concatinate pandas dataframe to multiindex

  14. 14

    reindex multiindex pandas dataframe

  15. 15

    Pandas Dataframe Multiindex Merge

  16. 16

    Pandas multiIndex DataFrame sort

  17. 17

    pandas indexing in multiindex dataframe

  18. 18

    Merge pandas DataFrame with MultiIndex

  19. 19

    Building MultiIndex in Pandas DataFrame

  20. 20

    MultiIndex Pandas From Dataframe

  21. 21

    Pandas MultiIndex DataFrame Sorting

  22. 22

    Pandas Dataframe Multiindex Merge

  23. 23

    Indexing with multiindex dataframe in pandas

  24. 24

    Resampling a pandas MultiIndex dataframe

  25. 25

    Update a Pandas MultiIndex DataFrame

  26. 26

    Pandas Get All Values from Multiindex levels

  27. 27

    Merge two MultiIndex levels into one in Pandas

  28. 28

    Pandas Get All Values from Multiindex levels

  29. 29

    Reorder pandas DataFrame with specific rules

HotTag

Archive