„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich Pandas-Datenrahmen oder -Serien mit mehreren Bedingungen effizient filtern?

Wie kann ich Pandas-Datenrahmen oder -Serien mit mehreren Bedingungen effizient filtern?

Veröffentlicht am 01.11.2024
Durchsuche:445

How to Efficiently Filter Pandas DataFrame or Series with Multiple Conditions?

Effizientes Filtern von Pandas-Datenrahmen oder -Serien mit mehreren Bedingungen

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.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729394837 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

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