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
Libérer: 2024-12-24 01:24:11
original
423 Les gens l'ont consulté

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
Copier après la connexion

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]
Copier après la connexion

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)]
Copier après la connexion

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
Copier après la connexion

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)]
Copier après la connexion

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})
Copier après la connexion

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

print(df.loc[df['A'] == 'foo'])
Copier après la connexion

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
Copier après la connexion

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'])])
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal