Pandas fournit un certain nombre de méthodes pour filtrer les données, notamment reindex(), apply() et map() . Toutefois, lors de l'application de plusieurs filtres, l'efficacité devient un problème.
Pour un filtrage optimisé, envisagez d'utiliser l'indexation booléenne. Pandas et Numpy prennent en charge l'indexation booléenne, qui opère directement sur le tableau de données sous-jacent sans créer de copies inutiles.
Voici un exemple d'indexation booléenne :
df.loc[df['col1'] >= 1, 'col1']
Cette expression renvoie une série Pandas contenant uniquement les lignes où les valeurs de la colonne 'col1' sont supérieures ou égales à 1.
À appliquez plusieurs filtres, utilisez les opérateurs logiques '&' (AND) et '|' (OU). Par exemple :
df[(df['col1'] >= 1) & (df['col1'] <=1 )]
Cette expression renvoie un DataFrame contenant uniquement les lignes où les valeurs de la colonne 'col1' sont comprises entre 1 et 1 inclus.
Pour fonctions d'assistance, envisagez de définir des fonctions qui prennent un DataFrame et renvoient une série booléenne, vous permettant de combiner plusieurs filtres à l'aide d'opérateurs logiques.
def b(x, col, op, n):
return op(x[col],n)
def f(x, *b):
return x[(np.logical_and(*b))]
Pandas 0.13 introduit la méthode query(), qui fournit un moyen plus efficace d'exprimer des conditions de filtrage complexes. En supposant des identifiants de colonne valides, le code suivant filtre DataFrame df en fonction de plusieurs conditions :
df.query('col1 <= 1 & 1 <= col1')
En résumé, l'indexation booléenne offre une méthode efficace pour appliquer plusieurs filtres aux Pandas DataFrames ou Series sans créer de copies inutiles. Utilisez des opérateurs logiques et des fonctions d'assistance pour combiner plusieurs filtres afin d'obtenir des fonctionnalités étendues.
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