Pandas: Create a DataFrame with MultiIndex for rows

31 July 2020

Code

Option # 1: Using .from_product()

# Import library
import pandas as pd

# Create MultiIndex
years = [2020, 2021]
season = ['summer', 'winter']
index = pd.MultiIndex.from_product([years, season],
                                  names=['year', 'season'])

# Create DataFrame
df = pd.DataFrame({
    'temperature': [40, 20, 30, 34], # celcius
    'humidity': [40, 30, 70, 45] # percent
    }, 
    index = index
)
print(df)
print(df.index)

Output

             temperature  humidity
year season                       
2020 summer           40        40
     winter           20        30
2021 summer           30        70
     winter           34        45
MultiIndex([(2020, 'summer'),
            (2020, 'winter'),
            (2021, 'summer'),
            (2021, 'winter')],
           names=['year', 'season'])




Option # 2: Using .from_arrays()

# Import library
import pandas as pd

# Create MultiIndex
years = [2020, 2020, 2021, 2021]
season = ['summer','winter','summer','winter']
index = pd.MultiIndex.from_arrays([years, season],
                                  names=['year', 'season'])

# Create DataFrame
df = pd.DataFrame({
    'temperature': [40, 20, 30, 34], # celcius
    'humidity': [40, 30, 70, 45] # percent
    }, 
    index = index
)
print(df)
print(df.index)

Output

             temperature  humidity
year season                       
2020 summer           40        40
     winter           20        30
2021 summer           30        70
     winter           34        45
MultiIndex([(2020, 'summer'),
            (2020, 'winter'),
            (2021, 'summer'),
            (2021, 'winter')],
           names=['year', 'season'])






Any errors in code above?
Please send a message.