Comment fusionner plusieurs DataFrames dans Pandas (avec exemple)
Vous pouvez utiliser la syntaxe suivante pour fusionner plusieurs DataFrames à la fois dans pandas :
import pandas as pd from functools import reduce #define list of DataFrames dfs = [df1, df2, df3] #merge all DataFrames into one final_df = reduce(lambda left,right: pd.merge(left,right,on=['column_name'], how='outer'), dfs)
L’exemple suivant montre comment utiliser cette syntaxe en pratique :
Exemple : fusionner plusieurs DataFrames dans Pandas
Supposons que nous ayons les trois DataFrames pandas suivants qui contiennent des informations sur les joueurs de basket-ball de différentes équipes :
import pandas as pd #create DataFrames df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D'], 'points': [18, 22, 19, 14]}) df2 = pd.DataFrame({'team': ['A', 'B', 'C'], 'assists': [4, 9, 14]}) df3 = pd.DataFrame({'team': ['C', 'D', 'E', 'F'], 'rebounds': [10, 17, 11, 10]}) #view DataFrames print(df1) team points 0 A 18 1 B 22 2 C 19 3 D 14 print(df2) team assists 0 A 4 1 B 9 2 C 14 print(df3) team rebounds 0 C 10 1 D 17 2 E 11 3 F 10
Nous pouvons utiliser la syntaxe suivante pour fusionner les trois DataFrames en un seul :
from functools import reduce
#define list of DataFrames
dfs = [df1, df2, df3]
#merge all DataFrames into one
final_df = reduce(lambda left,right: pd.merge(left,right,on=['team'],
how='outer'), dfs)
#view merged DataFrame
print(final_df)
team points assists rebounds
0 A 18.0 4.0 NaN
1 B 22.0 9.0 NaN
2 C 19.0 14.0 10.0
3 D 14.0 NaN 17.0
4 E NaN NaN 11.0
5 F NaN NaN 10.0
Le résultat final est un DataFrame qui contient les informations des trois DataFrames.
Notez que les valeurs NaN sont utilisées pour remplir les cellules vides du DataFrame final.
Pour utiliser une valeur autre que NaN pour remplir les cellules vides, on peut utiliser la fonction fillna() :
from functools import reduce
#define list of DataFrames
dfs = [df1, df2, df3]
#merge all DataFrames into one
final_df = reduce(lambda left,right: pd.merge(left,right,on=['team'],
how='outer'), dfs).fillna('none')
#view merged DataFrame
print(final_df)
team points assists rebounds
0 A 18.0 4.0 none
1 B 22.0 9.0 none
2 C 19.0 14.0 10.0
3 D 14.0 none 17.0
4 E none none 11.0
5 F none none 10.0
Chacune des cellules vides est désormais remplie avec « aucun » au lieu de NaN .
Remarque : Vous pouvez trouver la documentation complète de la fonction de fusion dans pandas ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment fusionner deux DataFrames Pandas sur l’index
Comment fusionner des DataFrames Pandas sur plusieurs colonnes
Comment empiler plusieurs DataFrames Pandas