Maison > développement back-end > Tutoriel Python > Comment joindre efficacement des DataFrames basés sur des plages de dates et d'heures dans Pandas ?

Comment joindre efficacement des DataFrames basés sur des plages de dates et d'heures dans Pandas ?

DDD
Libérer: 2024-12-13 05:42:09
original
158 Les gens l'ont consulté

How to Efficiently Join DataFrames Based on Datetime Ranges in Pandas?

Joindre des dataframes avec des valeurs de colonne dans la plage

Étant donné deux dataframes, df_1 et df_2, où df_1 contient une colonne datetime et les valeurs A et B, et df_2 contient des plages de valeurs datetime et informations d'événement correspondantes, une tâche courante consiste à fusionner ces trames de données en fonction de la condition que les valeurs datetime dans df_1 se situe dans les plages spécifiées dans df_2.

Une approche simple pour y parvenir consiste à créer un index d'intervalle à partir des colonnes de début et de fin de df_2 et à définir le paramètre fermé sur les deux. Cela garantit que les plages sont inclusives.

df_2.index = pd.IntervalIndex.from_arrays(df_2['start'],df_2['end'],closed='both')
Copier après la connexion

Une fois l'index d'intervalle créé, nous pouvons utiliser la méthode get_loc de IntervalIndex pour localiser la plage contenant la valeur datetime de df_1 pour chaque ligne.

df_1['event'] = df_1['timestamp'].apply(lambda x : df_2.iloc[df_2.index.get_loc(x)]['event'])
Copier après la connexion

En appliquant cette fonction à chaque valeur de la colonne datetime de df_1, nous pouvons remplir une nouvelle colonne, event, qui contient les informations d'événement correspondantes de df_2 pour chaque ligne de df_1.

Cette approche offre un moyen efficace de joindre des trames de données en fonction d'une condition de plage en utilisant les puissantes capacités d'indexation d'intervalle fournies par Pandas. La sortie sera une trame de données avec toutes les colonnes de df_1 et df_2, la colonne d'événements fournissant les événements correspondants pour chaque ligne de df_1.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal