Title: Reindexing pandas Series And Dataframes
Slug: pandas_dataframe_reindexing
Summary: Reindexing pandas Series And Dataframes
Date: 2016-05-01 12:00
Category: Python
Tags: Data Wrangling
Authors: Chris Albon

Series


In [1]:
# Import Modules
import pandas as pd
import numpy as np

In [2]:
# Create a pandas series of the risk of fire in Southern Arizona
brushFireRisk = pd.Series([34, 23, 12, 23], index = ['Bisbee', 'Douglas', 'Sierra Vista', 'Tombstone'])
brushFireRisk


Out[2]:
Bisbee          34
Douglas         23
Sierra Vista    12
Tombstone       23
dtype: int64

In [3]:
# Reindex the series and create a new series variable
brushFireRiskReindexed = brushFireRisk.reindex(['Tombstone', 'Douglas', 'Bisbee', 'Sierra Vista', 'Barley', 'Tucson'])
brushFireRiskReindexed


Out[3]:
Tombstone       23.0
Douglas         23.0
Bisbee          34.0
Sierra Vista    12.0
Barley           NaN
Tucson           NaN
dtype: float64

In [4]:
# Reindex the series and fill in any missing indexes as 0
brushFireRiskReindexed = brushFireRisk.reindex(['Tombstone', 'Douglas', 'Bisbee', 'Sierra Vista', 'Barley', 'Tucson'], fill_value = 0)
brushFireRiskReindexed


Out[4]:
Tombstone       23
Douglas         23
Bisbee          34
Sierra Vista    12
Barley           0
Tucson           0
dtype: int64

DataFrames


In [5]:
# Create a dataframe
data = {'county': ['Cochice', 'Pima', 'Santa Cruz', 'Maricopa', 'Yuma'], 
        'year': [2012, 2012, 2013, 2014, 2014], 
        'reports': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data)
df


Out[5]:
county reports year
0 Cochice 4 2012
1 Pima 24 2012
2 Santa Cruz 31 2013
3 Maricopa 2 2014
4 Yuma 3 2014

In [6]:
# Change the order (the index) of the rows
df.reindex([4, 3, 2, 1, 0])


Out[6]:
county reports year
4 Yuma 3 2014
3 Maricopa 2 2014
2 Santa Cruz 31 2013
1 Pima 24 2012
0 Cochice 4 2012

In [7]:
# Change the order (the index) of the columns
columnsTitles = ['year', 'reports', 'county']
df.reindex(columns=columnsTitles)


Out[7]:
year reports county
0 2012 4 Cochice
1 2012 24 Pima
2 2013 31 Santa Cruz
3 2014 2 Maricopa
4 2014 3 Yuma