Maison >développement back-end >Tutoriel Python >Comment sélectionner efficacement les données d'un DataFrame Pandas en fonction des valeurs de colonne ?

Comment sélectionner efficacement les données d'un DataFrame Pandas en fonction des valeurs de colonne ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-24 01:24:11415parcourir

How to Efficiently Select Data from a Pandas DataFrame Based on Column Values?

Comment sélectionner des données d'un DataFrame en fonction des valeurs de colonne

En SQL, une requête typique pour sélectionner des lignes en fonction des valeurs de colonne ressemblerait comme :

SELECT *
FROM table
WHERE column_name = some_value

Pour arriver au même résultat dans Pandas, il existe plusieurs approches :

Correspondance exacte des valeurs

Pour sélectionner les lignes où la valeur de la colonne est égale à une valeur spécifique (some_value), utilisez l'opérateur == dans .loc :

df.loc[df['column_name'] == some_value]

Inclusion et exclusion de valeurs

Pour sélectionner les lignes où la colonne la valeur est contenue dans une liste (some_values), utilisez la fonction isin :

df.loc[df['column_name'].isin(some_values)]

Pour exclure des valeurs spécifiques, annulez la série booléenne renvoyée par isin :

df = df.loc[~df['column_name'].isin(some_values)] # Note: This is not an in-place operation

Combinaison Conditions

Plusieurs conditions peuvent être combinées à l'aide d'opérateurs logiques comme & (AND) et | (OU) :

df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]

Notez que les parenthèses sont nécessaires pour garantir la bonne priorité des opérateurs.

Exemple

Considérez le DataFrame :

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
                   'B': 'one one two three two two one three'.split(),
                   'C': np.arange(8), 'D': np.arange(8) * 2})

Pour sélectionner les lignes où « A » est égal 'foo' :

print(df.loc[df['A'] == 'foo'])

Rendements :

     A      B  C  D
0  foo    one  0  0
2  foo    two  2  4
4  foo    two  4  8
6  foo    one  6  12
7  foo  three  7  14

Optimisation pour la sélection de valeurs multiples

Pour sélectionner des lignes en fonction de plusieurs valeurs, il est plus efficace pour créer un index et utiliser .loc avec df.index.isin. Cela évite plusieurs appels à isin, ce qui entraîne des performances améliorées.

df = df.set_index(['B'])
print(df.loc[df.index.isin(['one','two'])])

Rendements :

       A  C  D
B
one  foo  0  0
one  bar  1  2
one  foo  6  12
two  foo  2  4
two  foo  4  8
two  bar  5  10

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