How to Reorder DataFrame Columns in Python Pandas with Examples

Pandas, a powerful data manipulation library in Python, provides a versatile DataFrame structure for handling and analyzing tabular data. One common task when working with DataFrames is reordering columns to better suit analysis or presentation needs. In this article, we will explore various methods to reorder DataFrame columns in Python Pandas with illustrative examples.

1. Using Basic Indexing.

  1. One straightforward way to reorder columns is by using basic indexing.
  2. You can specify the desired order of column names to achieve the desired arrangement.
    import pandas as pd
    
    
    def reorder_dataframe_columns_use_basic_indexing():
        # Sample DataFrame
        data = {'Name': ['Alice', 'Bob', 'Charlie'],
                'Age': [25, 30, 35],
                'City': ['New York', 'San Francisco', 'Los Angeles']}
    
        df = pd.DataFrame(data)
    
        print("Original dataframe:")
        print(df)
    
    
        # Reorder columns
        new_order = ['City', 'Age', 'Name']
        df = df[new_order]
    
        # Display the DataFrame
        print("Reordered dataframe:")
        print(df)
    
    if __name__ == "__main__":
        reorder_dataframe_columns_use_basic_indexing()
  3. Output.
    Original dataframe:
          Name  Age           City
    0    Alice   25       New York
    1      Bob   30  San Francisco
    2  Charlie   35    Los Angeles
    Reordered dataframe:
                City  Age     Name
    0       New York   25    Alice
    1  San Francisco   30      Bob
    2    Los Angeles   35  Charlie

2. Using `reorder_levels`.

  1. The `reorder_levels` method allows you to rearrange the hierarchical index levels of a MultiIndex DataFrame.
  2. While it might not be the most common scenario, this method is useful when dealing with multi-level column indexes.
    import pandas as pd
    
    def using_reorder_levels():
        # Sample MultiIndex DataFrame
        data = [[10, 20, 30, 40], [50, 60, 70, 80]]
        columns = pd.MultiIndex.from_product([['A', 'B'], ['X', 'Y']], names=['Group', 'Variable'])
    
        print(columns)
    
        df = pd.DataFrame(data, columns=columns)
        #df = pd.DataFrame(data)
        print("Original dataframe:")
        print(df)
    
        # Reorder MultiIndex columns
        df = df.reorder_levels(['Variable', 'Group'], axis=1)
    
        # Display the DataFrame
        print("Reordered dataframe:")
        print(df)
    
    
    if __name__ == "__main__":
        using_reorder_levels()
  3. Output.
    MultiIndex([('A', 'X'),
                ('A', 'Y'),
                ('B', 'X'),
                ('B', 'Y')],
               names=['Group', 'Variable'])
    Original dataframe:
    Group      A       B
    Variable   X   Y   X   Y
    0         10  20  30  40
    1         50  60  70  80
    Reordered dataframe:
    Variable   X   Y   X   Y
    Group      A   A   B   B
    0         10  20  30  40
    1         50  60  70  80

3. Using `reindex` method.

  1. The `reindex` method allows you to conform a DataFrame to a new index or column order, providing flexibility in reordering columns.
    import pandas as pd
    
    def using_reindex_method():
        # Sample DataFrame
        data = {'Name': ['Alice', 'Bob', 'Charlie'],
                'Age': [25, 30, 35],
                'City': ['New York', 'San Francisco', 'Los Angeles']}
    
        df = pd.DataFrame(data)
    
        print("Original dataframe:")
        print(df)
    
        # Define the desired column order
        new_order = ['Name', 'City', 'Age']
    
        # Reorder columns using reindex
        df = df.reindex(columns=new_order)
    
        # Display the DataFrame
        print("Reordered dataframe:")
        print(df)
    
    
    if __name__ == "__main__":
        using_reindex_method()
  2. Output.
    Original dataframe:
          Name  Age           City
    0    Alice   25       New York
    1      Bob   30  San Francisco
    2  Charlie   35    Los Angeles
    Reordered dataframe:
          Name           City  Age
    0    Alice       New York   25
    1      Bob  San Francisco   30
    2  Charlie    Los Angeles   35

4. Using `loc` method.

  1. The `loc` method can be used to reorder DataFrame columns by label.
  2. This method is particularly useful when dealing with a large number of columns.
    import pandas as pd
    
    def using_loc_method():
        # Sample DataFrame
        data = {'Name': ['Alice', 'Bob', 'Charlie'],
                'Age': [25, 30, 35],
                'City': ['New York', 'San Francisco', 'Los Angeles']}
    
        df = pd.DataFrame(data)
        print("Original dataframe:")
        print(df)    
    
        # Reorder columns using loc
        df = df.loc[:, ['City', 'Name', 'Age']]
    
        # Display the DataFrame
        print("Reordered dataframe:")
        print(df)
    
    
    if __name__ == "__main__":
        using_loc_method()
  3. Output.
    Original dataframe:
          Name  Age           City
    0    Alice   25       New York
    1      Bob   30  San Francisco
    2  Charlie   35    Los Angeles
    Reordered dataframe:
                City     Name  Age
    0       New York    Alice   25
    1  San Francisco      Bob   30
    2    Los Angeles  Charlie   35

5. Conclusion.

  1. Reordering DataFrame columns in Python Pandas can be achieved through various methods, depending on the specific requirements of your analysis or data presentation.
  2. Whether using basic indexing, `reorder_levels`, `reindex`, or the `loc` method, the flexibility of Pandas makes it easy to manipulate column orders efficiently.
  3. Experiment with these methods to find the one that best suits your needs in different scenarios.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.