2 votes

Opération logique : Sélectionnez deux valeurs dans une colonne d'un cadre de données.

J'ai un cadre de données comme suit,

df2 = pd.DataFrame({'a' : ['one', 'one', 'two', 'three', 'two', 'one', 'six'],
                    'b' : ['x', 'y', 'y', 'x', 'y', 'x', 'x'],
                    'c' : np.random.randn(7)})

Je veux sélectionner les données de df2 où la colonne 'a' est égale à 'deux' ou 'trois', mon code est le suivant,

df2[df2['a']=='two'or df2['a']=='three']

Quelqu'un peut-il m'éclairer sur la raison pour laquelle mon code ne fonctionne pas ?

Erreur : La valeur de vérité d'une série est ambiguë. Utilisez a.empty, a.bool(), a.item(), a.any() ou a.all().

Merci d'avance !

2voto

W-B Points 94428

C'est que isin

slice=df2.loc[df2.a.isin(['one','two'])].copy()
slice
Out[797]: 
     a  b         c
0  one  x -0.064378
1  one  y  0.344902
2  two  y -0.080087
4  two  y  1.433515
5  one  x  1.065794

1voto

satomacoto Points 951

Utilisez | au lieu de or

df2[(df2['a']=='two') | (df2['a']=='three')]

0voto

Datanovice Points 2837

Vous êtes proche mais vous devez faire quelques choses, tout d'abord utiliser la fonction | pour spécifier une instruction ou, puis mettez chaque condition entre parenthèses,

Cela devrait fonctionner

df2.loc[(df2['a']=='two') | (df2['a']=='three')]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X