Pandas Multiple Conditions Indexing: Unerwartetes Verhalten
Bei Pandas ist das Anwenden von Filtern auf einen DataFrame ein häufiger Vorgang. Bei Verwendung mehrerer Bedingungen, insbesondere bei logischen Operatoren wie AND und OR, können jedoch unerwartete Ergebnisse auftreten.
Problem:
Beim Filtern von Zeilen basierend auf Werten in zwei Spalten , scheint sich der AND-Operator wie OR zu verhalten und umgekehrt. Der folgende Code sollte beispielsweise:
<code class="python">df = pd.DataFrame({'a': range(5), 'b': range(5) }) df['a'][1] = -1 df['b'][1] = -1 df['a'][3] = -1 df['b'][4] = -1 df1 = df[(df.a != -1) & (df.b != -1)] df2 = df[(df.a != -1) | (df.b != -1)] print(pd.concat([df, df1, df2], axis=1, keys=['original df', 'using AND (&)', 'using OR (|)',]))</code>
Erklärung:
Das unerwartete Verhalten ist darauf zurückzuführen, wie die logischen Operatoren im Kontext der Pandas-Indizierung interpretiert werden.
AND-Operator:
OR-Operator:
Daher verhält sich der AND-Operator wie OR, da er Zeilen aufgrund des Fehlens von -1 in einer Spalte ausschließt. Umgekehrt verhält sich der OR-Operator wie AND, da er Zeilen nur dann einschließt, wenn beide Spalten nicht -1 enthalten.
Zusätzlicher Hinweis:
Das obige ist der detaillierte Inhalt vonWarum zeigt die Pandas-Indizierung mit mehreren Bedingungen unerwartetes Verhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!