Maison >développement back-end >Tutoriel Python >Comment fusionner efficacement les DataFrames Pandas en fonction d'une condition de plage ?

Comment fusionner efficacement les DataFrames Pandas en fonction d'une condition de plage ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 11:06:30427parcourir

How to Efficiently Merge Pandas DataFrames Based on a Range Condition?

Rejoindre par plage dans Pandas

Dans la manipulation de données à l'aide de Pandas, une tâche courante consiste à fusionner deux trames de données en fonction d'une condition de plage. Cela implique d'identifier les lignes du dataframe A où les valeurs d'une colonne spécifique se situent dans une plage spécifiée dans le dataframe B.

Une approche de cette tâche consiste à créer une colonne factice dans les deux dataframes, en effectuant une jointure croisée à l'aide de cette colonne factice, puis filtrer les lignes qui ne répondent pas aux critères de plage. Cependant, cette méthode peut s'avérer inefficace pour les grands ensembles de données.

Une solution alternative consiste à utiliser la diffusion numpy, qui est une technique puissante pour effectuer des opérations par éléments sur des tableaux. En convertissant les colonnes pertinentes des dataframes A et B en tableaux numpy, nous pouvons appliquer des opérateurs logiques pour comparer A_value aux valeurs B_low et B_high afin d'identifier les lignes qui satisfont à la condition de plage.

import numpy as np

# Convert to numpy arrays
a = A.A_value.values
bh = B.B_high.values
bl = B.B_low.values

# Find intersecting indices
i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh))

# Merge and align dataframes
result = pd.concat([
    A.loc[i, :].reset_index(drop=True),
    B.loc[j, :].reset_index(drop=True)
], axis=1)

print(result)

Cette méthode offre une plus grande efficacité pour les grands ensembles de données par rapport à l’approche des colonnes factices. De plus, il permet une mise en œuvre facile des jointures gauche ou droite en ajustant la logique lors de l'étape de diffusion numpy.

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!

Déclaration:
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