Accéder à un niveau spécifique d'un MultiIndex avec xs
La méthode xs() permet d’accéder à un niveau spécifique d’un MultiIndex dans un DataFrame. Elle permet de sélectionner une sous-table à partir d’un ou plusieurs niveaux d’index, en spécifiant une valeur particulière pour un ou plusieurs niveaux. Cela est utile lorsque vous souhaitez extraire un sous-ensemble de données en fonction d’un niveau d’index précis.
Fonctions :
-
df.xs()
La méthode xs() permet d'accéder à un niveau spécifique d'un MultiIndex. Elle permet de sélectionner une valeur particulière dans un ou plusieurs niveaux d'index et de renvoyer un sous-ensemble du DataFrame correspondant à cette valeur. Cette méthode est particulièrement utile pour travailler avec des données hiérarchiques où vous avez plusieurs niveaux d'index. Avec xs(), vous pouvez filtrer un DataFrame par un niveau d'index particulier sans avoir besoin de manipuler toute la structure du MultiIndex. Elle est généralement utilisée pour extraire une portion de données à partir d'un ou plusieurs niveaux d'index.
Importation :
import pandas as pd
Attributs :
Paramètre Type Description Valeur par défaut key
str, list, ou array La valeur du niveau d'index auquel vous souhaitez accéder. Par exemple, une étiquette de niveau d'index ou une liste de valeurs. None
level
str ou int Le niveau de l'index sur lequel vous souhaitez effectuer la recherche. Ce paramètre peut être un nom de niveau ou un index de niveau. None
axis
int, optionnel L'axe sur lequel opérer, soit 0
pour les lignes (par défaut) ou1
pour les colonnes.0
drop_level
bool, optionnel Si True
, le niveau sélectionné est supprimé de l'index, transformant le résultat en un DataFrame avec un index plus simple. Par défaut, il estFalse
.False
Exemple de code :
import pandas as pd # Création d'un DataFrame avec un MultiIndex index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1), ('B', 2)], names=['lettre', 'num']) df = pd.DataFrame({ 'valeur': [10, 20, 30, 40] }, index=index) # Accéder aux lignes où 'lettre' est égal à 'A' df_xs = df.xs('A', level='lettre') # Afficher le résultat print(df_xs)
Explication du code :
-
Accéder à un niveau d'un MultiIndex :
La méthodexs()
permet d'accéder à une valeur spécifique d'un ou plusieurs niveaux d'unMultiIndex
. Vous indiquez la valeur de l'index (par exemple'A'
) et le nom du niveau ('lettre'
) pour obtenir toutes les lignes où le niveau'lettre'
a la valeur'A'
. -
Retour d'un DataFrame filtré :
L'appel àdf.xs('A', level='lettre')
retournera un DataFrame qui contient uniquement les lignes où la valeur de l'indexlettre
est égale à'A'
. -
Option
drop_level=True
:
Lorsque vous utilisezdrop_level=True
, vous obtenez un DataFrame où le niveau d'index sur lequel vous avez filtré est supprimé, ce qui simplifie l'index du DataFrame résultant.
🔹 Remarques pratiques
-
Filtrer par plusieurs niveaux :
La méthodexs()
peut être utilisée pour accéder à un sous-ensemble basé sur plusieurs niveaux d'unMultiIndex
. Par exemple, vous pouvez filtrer les données sur les niveaux'lettre'
et'num'
. -
drop_level=True
:
Si vous souhaitez simplifier l'index du DataFrame retourné, vous pouvez utiliserdrop_level=True
, ce qui supprimera le niveau d'index sur lequel vous avez effectué la recherche. -
Travailler avec l'axe des colonnes :
Vous pouvez également utiliserxs()
pour accéder à un niveau spécifique des colonnes dans un DataFrame.
-