Comment fusionner efficacement plusieurs trames de données basées sur une colonne de date commune ?

Susan Sarandon
Libérer: 2024-11-12 12:36:02
original
972 Les gens l'ont consulté

How do I efficiently merge multiple dataframes based on a common date column?

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)
Copier après la connexion

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 :

  • Simplicité :Le le code est concis et facile à comprendre.
  • Pas d'imbrication : Contrairement à votre approche récursive, il n'y a pas d'imbrication des opérations de fusion, éliminant ainsi le risque de boucles infinies.
  • Extensibilité : Vous pouvez ajouter ou supprimer des dataframes de la liste dfs pour modifier l'opération de fusion dynamiquement.

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal