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 du 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 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 trames de données 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]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 implémentation facile des jointures gauche ou droite en ajustant la logique lors de l'étape de diffusion numpy.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3