lassence.net

Field notes from the AI frontier

Flatten multi-index columns in pandas DataFrames

--- archive: codebook, 2020–2023 · topic: Pandas ---

Setup

# Import libraries
import pandas as pd
import seaborn as sns

# Load sample data in a DataFrame
df = (
    sns.load_dataset('iris')
    [['species', 'petal_length']]
    .groupby('species')
    .agg(['min', 'mean', 'max'])
)
df
petal_length
min
species
setosa1.0
versicolor3.0
virginica4.5

Drop a level

# Just drop the first level
df.droplevel(0, axis=1)
minmeanmax
species
setosa1.01.4621.9
versicolor3.04.2605.1
virginica4.55.5526.9

Concatenate names

# Method chaining
df.set_axis(['_'.join(col).strip() for col in df.columns.values], axis=1)
petal_length_minpetal_length_meanpetal_length_max
species
setosa1.01.4621.9
versicolor3.04.2605.1
virginica4.55.5526.9
# Classic way
df.columns = ['_'.join(col).strip() for col in df.columns.values]
df
petal_length_minpetal_length_meanpetal_length_max
species
setosa1.01.4621.9
versicolor3.04.2605.1
virginica4.55.5526.9