Je suppose que c'est une solution facile et je ne suis pas sûr de ce que je manque. J'ai un cadre de données en tant que tel:
index c1 c2 c3
2015-03-07 01:27:05 False False True
2015-03-07 01:27:10 False False True
2015-03-07 01:27:15 False False False
2015-03-07 01:27:20 False False True
2015-03-07 01:27:25 False False False
2015-03-07 01:27:30 False False True
Je souhaite supprimer toutes les lignes contenant False
dans c3
. c3
est un dtype=bool
. Je rencontre régulièrement des problèmes car c'est un booléen et non une chaîne/int/etc, je ne l'avais pas géré auparavant.
Merci pour toute aide!
Les pandas traitent les booléens de manière très nette et simple:
df = df[df.c3]
Lorsque vous filtrez des images avec df[...]
, vous écrivez souvent une fonction qui renvoie une valeur booléenne (telle que df.x > 2
). Mais dans ce cas, puisque la colonne est déjà un booléen, vous pouvez simplement insérer df.c3
seul, ce qui vous donnera toutes les lignes qui sont True
.
Si vous voulez obtenir le contraire (comme le titre original de votre question l'indique), vous pouvez utiliser df[~df.c3]
, où ~
inverse les booléens.
Pour plus d'informations sur l'indexation booléenne dans les pandas, voir docs .
Bien le titre de la question et la question elle-même sont exactement le contraire, mais:
df = df[df['c3'] == True] # df will have only rows with True in c3
df.drop(df[df['c3'] == False].index, inplace=True)
Cela supprime explicitement les lignes où 'c3'
est False
et ne garde pas que les lignes évaluées à True