← retour aux snippets

pandas: MultiIndex slice/xs

Slicer des niveaux via .xs et .loc avec slice().

python pandas #pandas#multiindex#slice

objectif

Slicer des niveaux via .xs et .loc avec slice().

code minimal

import pandas as pd

df = pd.DataFrame({"g":["a","a","b","b"], "k":[1,2,1,2], "v":[10,20,30,40]}).set_index(["g","k"])
print(df.xs(("a", slice(None))).to_dict()["v"])

utilisation

import pandas as pd

df = pd.DataFrame({"g":["a","a","b","b"], "k":[1,2,1,2], "v":[10,20,30,40]}).set_index(["g","k"])
print(df.loc[pd.IndexSlice["b", 1], "v"].item())

variante(s) utile(s)

import pandas as pd

df = pd.DataFrame({"g":["a","a","b","b"], "k":[1,2,1,2], "v":[10,20,30,40]}).set_index(["g","k"])
print(df.loc[("a", slice(1,2)), :].shape[0])

notes

  • IndexSlice pratique pour ranges sur niveaux.