Exemples de comment créer une dataframe avec plusieurs indices avec pandas en python:
Table des matières
- Créer une dataframe avec plusieurs indices à partir d'un tuple
- Créer une dataframe avec plusieurs indices en utilisant MultiIndex.from_product()
- Obtenir les noms des indices MultiIndex d'une dataframe:
- Obtenir les valeurs d'une ligne d'une dataframe pour un indice donné
- Modifier une valeur dans la dataframe
- Références
Créer une dataframe avec plusieurs indices à partir d'un tuple
Pour créer une dataframe avec plusieurs indices à partir d'un tuple, une solution est d'utiliser MultiIndex / advanced indexing:
import pandas as pdtuples = [('Land', 'Liquid'),('Land', 'Ice'),('Ocean', 'Liquid'),('Ocean', 'Ice')]index = pd.MultiIndex.from_tuples(tuples, names=["Id1", "Id2"])df = pd.DataFrame({'Count A': [12., 70., 30., 20.], 'Count B': [12., 70., 30., 20.]}, index=index)print(df)
donne ici
Count A Count BId1 Id2Land Liquid 12.0 12.0Ice 70.0 70.0Ocean Liquid 30.0 30.0Ice 20.0 20.0
Créer une dataframe avec plusieurs indices en utilisant MultiIndex.from_product()
Un autre moyen plus efficace de créer une base de données avec plusieurs indices consiste à utiliser MultiIndex.from_product)
import pandas as pditerables = [["Land", "Ocean"], ["Liquid", "Ice"]]index = pd.MultiIndex.from_product(iterables, names=["Id1", "Id2"])df = pd.DataFrame({'Count A': [12., 70., 30., 20.], 'Count B': [12., 70., 30., 20.]}, index=index)
renvoie la même dataframe qu'avant
Count A Count BId1 Id2Land Liquid 12.0 12.0Ice 70.0 70.0Ocean Liquid 30.0 30.0Ice 20.0 20.0
Obtenir les noms des indices MultiIndex d'une dataframe:
Pour trouver les noms des indices d'une dataframe:
df.index
donne
MultiIndex([( 'Land', 'Liquid'),( 'Land', 'Ice'),('Ocean', 'Liquid'),('Ocean', 'Ice')],names=['Id1', 'Id2'])
Obtenir les valeurs d'une ligne d'une dataframe pour un indice donné
Pour obtenir la ligne de la dataframe associée aux indices "Ocean" et "Liquid":
df.loc['Ocean','Liquid']
donne
Count A 30.0Count B 30.0Name: (Ocean, Liquid), dtype: float64
Pour obtenir uniquement pour la colonne nommée "Count A":
df['Count A'].loc['Ocean','Liquid']
donne alors
30.0
Pour obtenir toutes les lignes avec le libellé "Océan"
df.loc['Ocean',:]
donne
Count A Count BId2Liquid 99.0 30.0Ice 20.0 20.0
Modifier une valeur dans la dataframe
Pour changer une valeur dans la dataframe, une solution est de faire par exemple
df['Count A'].loc['Ocean','Liquid'] = 99.0print(df)
donne
Count A Count BId1 Id2Land Liquid 12.0 12.0Ice 70.0 70.0Ocean Liquid 99.0 30.0Ice 20.0 20.0
