Heim >Backend-Entwicklung >Python-Tutorial >Warum scheinen die Operatoren AND (&) und OR (|) von Pandas umgekehrt zu sein, wenn ein DataFrame mit mehreren Bedingungen indiziert wird?
Pandas: Unerwartetes Verhalten mit mehreren Bedingungen beim Indizieren des Datenrahmens
Beim Filtern von Zeilen in einem Datenrahmen nach Werten in mehreren Spalten ist es wichtig, Folgendes zu tun Verstehen Sie das Verhalten der Operatoren AND (&) und OR (|).
In einer kürzlich durchgeführten Beobachtung wurde festgestellt, dass das Verhalten dieser Operatoren umgekehrt zu sein schien. Der OR-Operator schien sich wie der AND-Operator zu verhalten und umgekehrt.
Betrachten Sie zur Veranschaulichung den folgenden DataFrame:
<code class="python">df = pd.DataFrame({'a': range(5), 'b': range(5) }) # Insert -1 values 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>
Das Ergebnis ist:
<code class="python"> Original df Using AND (&) Using OR (|) a b a b a b 0 0 0 0 0 0 0 1 -1 -1 NaN NaN NaN NaN 2 2 2 2 2 2 2 3 -1 3 NaN NaN -1 3 4 4 -1 NaN NaN 4 -1 [5 rows x 6 columns]</code>
Wie in der Ausgabe zu sehen ist, löscht der AND-Operator Zeilen, in denen mindestens ein Wert -1 ist, während der OR-Operator Zeilen beibehält, in denen beide Werte nicht -1 sind.
Dieses Verhalten mag kontraintuitiv erscheinen, macht es aber Sinn, wenn wir uns daran erinnern, dass wir die Bedingungen für Zeilen angeben, die wir behalten und nicht löschen möchten.
Daher ist das beobachtete Verhalten korrekt.
Das obige ist der detaillierte Inhalt vonWarum scheinen die Operatoren AND (&) und OR (|) von Pandas umgekehrt zu sein, wenn ein DataFrame mit mehreren Bedingungen indiziert wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!