Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Pandas-Datenrahmen oder -Serien mit mehreren Bedingungen effizient filtern?
Pandas bietet eine Reihe von Methoden zum Filtern von Daten, darunter reindex(), apply() und map() . Bei der Anwendung mehrerer Filter wird jedoch die Effizienz zum Problem.
Für eine optimierte Filterung sollten Sie die Verwendung einer booleschen Indizierung in Betracht ziehen. Sowohl Pandas als auch Numpy unterstützen die boolesche Indizierung, die direkt auf dem zugrunde liegenden Datenarray arbeitet, ohne unnötige Kopien zu erstellen.
Hier ist ein Beispiel für die boolesche Indizierung:
<code class="python">df.loc[df['col1'] >= 1, 'col1']</code>
Dieser Ausdruck gibt eine Pandas-Serie zurück, die enthält Nur die Zeilen, in denen die Werte in Spalte „col1“ größer oder gleich 1 sind.
Um mehrere Filter anzuwenden, verwenden Sie die logischen Operatoren „&“ (AND) und „|“ (ODER). Zum Beispiel:
<code class="python">df[(df['col1'] >= 1) & (df['col1'] <=1 )]</code>
Dieser Ausdruck gibt einen DataFrame zurück, der nur die Zeilen enthält, in denen die Werte in Spalte „col1“ zwischen 1 und 1 (einschließlich) liegen.
Erwägen Sie für Hilfsfunktionen die Definition von Funktionen, die Nehmen Sie einen DataFrame und geben Sie eine boolesche Reihe zurück, sodass Sie mehrere Filter mithilfe logischer Operatoren kombinieren können.
<code class="python">def b(x, col, op, n): return op(x[col],n) def f(x, *b): return x[(np.logical_and(*b))]</code>
Pandas 0.13 führt die Methode query() ein, die eine effizientere Möglichkeit bietet, komplexe Filterbedingungen auszudrücken. Unter der Annahme gültiger Spaltenbezeichner filtert der folgende Code DataFrame df basierend auf mehreren Bedingungen:
<code class="python">df.query('col1 <= 1 & 1 <= col1')</code>
Zusammenfassend bietet die boolesche Indizierung eine effiziente Methode zum Anwenden mehrerer Filter auf Pandas-DataFrames oder -Serien, ohne unnötige Kopien zu erstellen. Verwenden Sie logische Operatoren und Hilfsfunktionen, um mehrere Filter für erweiterte Funktionalität zu kombinieren.
Das obige ist der detaillierte Inhalt vonWie kann ich Pandas-Datenrahmen oder -Serien mit mehreren Bedingungen effizient filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!