# Reverse row order in pandas - Python
Data Science for Political and Social Phenomena
Author: Guillaume Redoulès

# Reverse row order in pandas

    # Import modules
    import pandas as pd

    # Example dataframe

    raw_data  = {'fruit': ['Banana', 'Orange', 'Apple', 'lemon', "lime", "plum"],
            'color': ['yellow', 'orange', 'red', 'yellow', "green", "purple"],
            'kcal': [89, 47, 52, 15, 30, 28]
        }

    df = pd.DataFrame(raw_data, columns = ['fruit', 'color', 'kcal'])
    df

| fruit | color | kcal
--- | --- | --- | ---
0 | Banana | yellow | 89
1 | Orange | orange | 47
2 | Apple | red | 52
3 | lemon | yellow | 15
4 | lime | green | 30
5 | plum | purple | 28

The rows of a dataframe can be reversed by using the loc accessor and passing `::-1`. This notation is the same as the one used to reverse a list in python

    df.loc[::-1]

| fruit | color | kcal
--- | --- | --- | ---
5 | plum | purple | 28
4 | lime | green | 30
3 | lemon | yellow | 15
2 | Apple | red | 52
1 | Orange | orange | 47
0 | Banana | yellow | 89

If you want to reset the index as well so that the dataframe starts with a 0, you can combine what we just learned with the `reset_index` method

    df.loc[::-1].reset_index(drop=True)

| fruit | color | kcal
--- | --- | --- | ---
0 | plum | purple | 28
1 | lime | green | 30
2 | lemon | yellow | 15
3 | Apple | red | 52
4 | Orange | orange | 47
5 | Banana | yellow | 89

that way, the rows are in reverse order but the index column has been re-initialized so it starts with 0

### Find an error or bug? Have a suggestion?

Everything on this site is avaliable on GitHub. Head on over and submit an issue. You can also message me directly by email.