J'ai essayé de filtrer mes pandas DataFrame en fonction de deux conditions (if
, else
). Seule l'instruction if
fonctionne. L'instruction if
conserve (indicateurs) tous les enregistrements dans mon DataFrame en fonction de 2 conditions (logic1
et logic2
). Voir la section 4.Exclure des enregistrements de pandas DataFrame basé sur les valeurs de colonne
Dans la déclaration else
, je voudrais exclure tous les ids qui ont été signalés (logic1
et logic2
), sans créer une liste supplémentaire ou en boucle sur chaque enregistrement. Existe-t-il un moyen de filtrer tous ces enregistrements sans stocker les ID dans une liste supplémentaire?
Je souhaite utiliser uniquement les fonctions de filtrage, si possible. Actuellement, je reçois la sortie de la section 3. C'est faux parce que id = 2
a été marqué, mais est toujours inclus dans la sortie. La sortie I besoin est indiqué à la section 4.
code
logic1 = (potatoes['Desc'] == 'Bla2') & (potatoes['Value'] == True) & (potatoes['Enabled'] == True)
logic2 = (potatoes['Desc'].isin(['Bla8', 'Bla9'])) & (potatoes['Active'] == True) & (potatoes['Enabled'] == True)
if flagged:
potatoes_flagged = potatoes[logic1 | logic2]
return potatoes_flagged
else:
potatoes_not_flagged = potatoes[~logic1 & ~logic2]
return potatoes_not_flagged
1. Entrée (pommes de terre)
id | Desc | Active | Enabled | Value | [A LOT OF OTHER COLUMNS]
1 | Bla1 | 1 | 0 | 1 | [A LOT OF OTHER COLUMNS]
2 | Bla2 | 1 | 1 | 1 | [A LOT OF OTHER COLUMNS]
2 | Bla3 | 1 | 1 | 0 | [A LOT OF OTHER COLUMNS]
2 | Bla4 | 0 | 0 | 0 | [A LOT OF OTHER COLUMNS]
2 | Bla5 | 0 | 0 | 0 | [A LOT OF OTHER COLUMNS]
3 | Bla6 | 1 | 1 | 0 | [A LOT OF OTHER COLUMNS]
4 | Bla7 | 0 | 0 | 1 | [A LOT OF OTHER COLUMNS]
2. Sortie pour battant pavillon (si) (CORRECT
id | Desc | Active | Enabled | Value | [A LOT OF OTHER COLUMNS]
2 | Bla2 | 1 | 1 | 1 | [A LOT OF OTHER COLUMNS]
3. Sortie pour ne pas signalé (autre) (MAL)
id | Desc | Active | Enabled | Value | [A LOT OF OTHER COLUMNS]
1 | Bla1 | 1 | 0 | 1 | [A LOT OF OTHER COLUMNS]
2 | Bla3 | 1 | 1 | 0 | [A LOT OF OTHER COLUMNS]
2 | Bla4 | 0 | 0 | 0 | [A LOT OF OTHER COLUMNS]
2 | Bla5 | 0 | 0 | 0 | [A LOT OF OTHER COLUMNS]
3 | Bla6 | 1 | 1 | 0 | [A LOT OF OTHER COLUMNS]
4 | Bla7 | 0 | 0 | 1 | [A LOT OF OTHER COLUMNS]
4. Sortie nécessaire pour ne pas signalé (CORRECT)
id | Desc | Active | Enabled | Value | [A LOT OF OTHER COLUMNS]
1 | Bla1 | 1 | 0 | 1 | [A LOT OF OTHER COLUMNS]
3 | Bla6 | 1 | 1 | 0 | [A LOT OF OTHER COLUMNS]
4 | Bla7 | 0 | 0 | 1 | [A LOT OF OTHER COLUMNS]
Je pense que vous avez besoin de 'pommes de terre [~ (logique1 & logique2)]', mais votre sortie attendue est fausse? –
car, d'après vos données, id = 2 n'est jamais signalé ici. –
Je ne vois pas pourquoi 'id = 2' n'est jamais marqué et aussi' ~ logic1 & ~ logic2' semble correct. – orangetacos