Indexing Pandas MultiIndex using Cross-Section (xs)

Viewed 13

I want to select two columns from the statistic column index level using pd.xs.

Here's my dataframe:

import numpy as np
import pandas as pd

col_level_1 = ["long_only", "short_only", "both"]
col_level_2 = ["min", "median", "mean", "max"]
idx = pd.bdate_range(start="2022-01-01", periods=5)
mi = pd.MultiIndex.from_product(
    (col_level_1, col_level_2), names=["direction", "statistic"]
)
df = pd.DataFrame(
    data=np.random.randint(low=0, high=10, size=(5, 12)), index=idx, columns=mi
)

print(df.xs(key=("median", "mean"), axis=1, level="statistic"))  # <-- results in KeyError: ('median', 'mean')
0 Answers
Related