Maison >développement back-end >Tutoriel Python >Comment fusionner efficacement les DataFrames Pandas en fonction d'une condition de plage ?
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!