Maison >développement back-end >Tutoriel Python >Comment effectuer efficacement des jointures basées sur la plage dans Pandas à l'aide de Numpy Broadcasting ?

Comment effectuer efficacement des jointures basées sur la plage dans Pandas à l'aide de Numpy Broadcasting ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 19:53:31766parcourir

How to Efficiently Perform Range-Based Joins in Pandas Using Numpy Broadcasting?

Méthode la plus efficace pour les jointures basées sur une plage dans Pandas

Lorsque vous travaillez avec des dataframes pandas, la nécessité d'effectuer des jointures basées sur une plage (fusions ) est une tâche courante. Pour résoudre ce problème, différentes approches ont été proposées, chacune présentant ses propres avantages et inconvénients. Cependant, la méthode la plus élégante et la plus efficace consiste à utiliser la diffusion numpy.

Considérez les trames de données A et B, où notre objectif est de les joindre en interne en fonction de la condition que A_value se situe dans la plage spécifiée par B_low et B_high.

Pour y parvenir, nous exploitons la puissance de numpy pour vérifier si chaque élément de A_value satisfait aux critères de plage. Ceci est accompli en diffusant les valeurs de A_value par rapport aux limites inférieure et supérieure (B_low et B_high) des plages de B.

Le résultat est deux tableaux, i et j, où i contient les indices de correspondance A_value éléments dans A, et j contient les indices correspondants dans B. En combinant ces indices, nous pouvons récupérer les lignes souhaitées des deux dataframes et les concaténer pour créer le dataframe fusionné.

Voici le code mis à jour pour cette approche :

<code class="python">import numpy as np

a = A.A_value.values
bh = B.B_high.values
bl = B.B_low.values

i, j = np.where((a[:, None] >= bl) &amp; (a[:, None] <= bh))

pd.concat([
    A.loc[i, :].reset_index(drop=True),
    B.loc[j, :].reset_index(drop=True)
], axis=1)</code>

Cette méthode fournit non seulement une solution efficace, mais gère également les jointures internes et gauches avec élégance. En ajustant les paramètres, nous pouvons facilement l'adapter à différents scénarios de jointure.

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