426 votes

Suppression de la ligne DataFrame dans les pandas en fonction de la valeur de la colonne

J'ai le DataFrame suivant ...

              daysago  line_race rating        rw    wrating
 line_date                                                 
 2007-03-31       62         11     56  1.000000  56.000000
 2007-03-10       83         11     67  1.000000  67.000000
 2007-02-10      111          9     66  1.000000  66.000000
 2007-01-13      139         10     83  0.880678  73.096278
 2006-12-23      160         10     88  0.793033  69.786942
 2006-11-09      204          9     52  0.636655  33.106077
 2006-10-22      222          8     66  0.581946  38.408408
 2006-09-29      245          9     70  0.518825  36.317752
 2006-09-16      258         11     68  0.486226  33.063381
 2006-08-30      275          8     72  0.446667  32.160051
 2006-02-11      475          5     65  0.164591  10.698423
 2006-01-13      504          0     70  0.142409   9.968634
 2006-01-02      515          0     64  0.134800   8.627219
 2005-12-06      542          0     70  0.117803   8.246238
 2005-11-29      549          0     70  0.113758   7.963072
 2005-11-22      556          0     -1  0.109852  -0.109852
 2005-11-01      577          0     -1  0.098919  -0.098919
 2005-10-20      589          0     -1  0.093168  -0.093168
 2005-09-27      612          0     -1  0.083063  -0.083063
 2005-09-07      632          0     -1  0.075171  -0.075171
 2005-06-12      719          0     69  0.048690   3.359623
 2005-05-29      733          0     -1  0.045404  -0.045404
 2005-05-02      760          0     -1  0.039679  -0.039679
 2005-04-02      790          0     -1  0.034160  -0.034160
 2005-03-13      810          0     -1  0.030915  -0.030915
 2004-11-09      934          0     -1  0.016647  -0.016647
 

Je dois supprimer les lignes où line_race est égal à zéro. Quel est le moyen le plus efficace de le faire?

741voto

tshauck Points 1535

Si je comprends bien, cela devrait être aussi simple que:

 df = df[df.line_race != 0]
 

166voto

wonderkid2 Points 93

Merci pour les réponses ci-dessus! Mais pour tous les futurs passants, vous pouvez mentionner que df = df [df.line_race! = 0] ne fait rien en essayant de filtrer les valeurs None /.

Ça marche:

 df = df[df.line_race != 0]
 

Ne fait rien:

 df = df[df.line_race != None]
 

Ça marche:

 df = df[df.line_race.notnull()]
 

(J'aurais commenté, mais je n'ai pas assez de points.)

39voto

Phillip Cloud Points 6685

La meilleure façon de le faire est avec masquage booléenne :

Mise à jour : Maintenant que les pandas 0,13 est sorti, une autre façon de faire est `` .

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