Maison > Article > développement back-end > Comment fusionner efficacement plusieurs trames de données basées sur une colonne de date commune ?
Fusion de plusieurs dataframes en fonction de la date
Vous disposez de plusieurs dataframes avec une colonne de date commune mais un nombre variable de lignes et de colonnes. L'objectif est de fusionner ces dataframes pour obtenir des lignes où chaque date est commune à toutes les dataframes.
Approche de récursion inefficace
Votre tentative d'utiliser une fonction de récursivité pour fusionner des dataframes est imparfait. La fonction entre dans une boucle infinie car elle s'appelle continuellement avec les mêmes entrées. Cette approche est inefficace et sujette aux erreurs.
Solution optimisée utilisant réduire
Une méthode plus efficace pour fusionner plusieurs trames de données consiste à utiliser la fonction réduire du module functools. Cette fonction réduit une liste de trames de données en une seule trame de données en appliquant à plusieurs reprises une opération de fusion spécifiée à des paires de trames de données adjacentes.
L'extrait de code suivant illustre cette approche :
import pandas as pd from functools import reduce dfs = [df1, df2, df3] # list of dataframes df_merged = reduce(lambda left, right: pd.merge(left, right, on='date', how='outer'), dfs)
Dans ce code , la fonction de réduction réduit la liste dfs en une seule trame de données en fusionnant de manière itérative des paires adjacentes de trames de données. Le paramètre on='date' spécifie que la fusion doit être effectuée en fonction de la colonne de date. Le paramètre how='outer' garantit que toutes les lignes des deux dataframes sont incluses dans le résultat fusionné, même si elles ne partagent pas la même date.
Avantages de la fonction de réduction
L'utilisation de la fonction réduire offre plusieurs avantages :
Exemple
En utilisant les dataframes fournis df1, df2 et df3, vous obtiendrez le dataframe fusionné suivant :
DATE VALUE1 VALUE2 VALUE3 0 May 15, 2017 1901.00 2902.00 3903.00
Ce dataframe contient uniquement des lignes avec une date commune aux trois dataframes d'entrée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!