la sélection de lignes en fonction de plusieurs valeurs de la colonne dans les pandas dataframe
J'ai un pandas
DataFrame
df
:
import pandas as pd
data = {"Name": ["AAAA", "BBBB"],
"C1": [25, 12],
"C2": [2, 1],
"C3": [1, 10]}
df = pd.DataFrame(data)
df.set_index("Name")
qui ressemble à ceci lors de l'impression (pour référence):
C1 C2 C3
Name
AAAA 25 2 1
BBBB 12 1 10
Je voudrais choisir les lignes pour lesquelles C1
, C2
et C3
entre les valeurs 0
et 20
.
Pouvez-vous suggérer un moyen élégant pour sélectionner les lignes?
Il est utile lorsque vous ajouter une mise en forme à votre question de définir les parties de code à l'écart de la question des pièces. Aussi, vous devez toujours démontrer que vous avez essayé de venir avec votre propre solution de premier et de décrire ce que vous avez essayé.
OriginalL'auteur Ssank | 2015-03-23
Vous devez vous connecter pour publier un commentaire.
Je pense que ci-dessous devrait le faire, mais son élégance est en place pour le débat.
OriginalL'auteur kennes
Version plus courte:
OriginalL'auteur EdChum
J'aime utiliser df.query() pour ce genre de choses
OriginalL'auteur Rob Buckley
Bâtiment au sommet de la dernière deux réponses: on peut aussi utiliser
frame.query
'sa < b < c
syntaxe:df.query("(0 < C1 < 20) and (0 < C2 < 20) and (0 < C3 < 20)")
et/ou
frame.query
's@foo
la syntaxe (en citant sa documentation: "Vous pouvez faire référence à des variables dans l'environnement en les préfixant avec un@
de caractères"):df.query("0 < @df < 20").dropna()
OriginalL'auteur braham-snyder