Pandas bietet eine Reihe von Methoden zum Filtern von Daten, einschließlich 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:
df.loc[df['col1'] >= 1, 'col1']
Dieser Ausdruck gibt eine Pandas-Reihe zurück, die nur die Zeilen enthält, in denen die Werte in Spalte 'col1' größer oder gleich 1 sind.
To Wenden Sie mehrere Filter an, verwenden Sie die logischen Operatoren „&“ (AND) und „|“ (ODER). Zum Beispiel:
df[(df['col1'] >= 1) & (df['col1'] <=1 )]
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.
Für Hilfsfunktionen: Erwägen Sie die Definition von Funktionen, die einen DataFrame annehmen und eine boolesche Reihe zurückgeben, sodass Sie mehrere Filter mithilfe logischer Operatoren kombinieren können.
def b(x, col, op, n):
return op(x[col],n)
def f(x, *b):
return x[(np.logical_and(*b))]
Pandas 0.13 führt die query()-Methode 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:
df.query('col1 <= 1 & 1 <= col1')
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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3