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 pd
tuples = [('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 B
Id1 Id2
Land Liquid 12.0 12.0
Ice 70.0 70.0
Ocean Liquid 30.0 30.0
Ice 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 pd
iterables = [["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 B
Id1 Id2
Land Liquid 12.0 12.0
Ice 70.0 70.0
Ocean Liquid 30.0 30.0
Ice 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.0
Count B 30.0
Name: (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 B
Id2
Liquid 99.0 30.0
Ice 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.0
print(df)
donne
Count A Count B
Id1 Id2
Land Liquid 12.0 12.0
Ice 70.0 70.0
Ocean Liquid 99.0 30.0
Ice 20.0 20.0