Heim >Backend-Entwicklung >Python-Tutorial >So filtern Sie Pandas-DataFrames und -Serien effizient anhand mehrerer Kriterien

So filtern Sie Pandas-DataFrames und -Serien effizient anhand mehrerer Kriterien

Susan Sarandon
Susan SarandonOriginal
2024-10-20 12:18:30255Durchsuche

How to Efficiently Filter Pandas DataFrames and Series Using Multiple Criteria

Effizientes Anwenden mehrerer Filter auf Pandas-Datenrahmen und -Serien

Bei der Arbeit mit Daten in Pandas ist es häufig erforderlich, nach mehreren Kriterien zu filtern. Während der traditionelle Ansatz die Verkettung mehrerer reindex()-Operationen beinhaltet, erstellt diese Technik neue Objekte und kopiert Daten, was zu Ineffizienz führt.

Ein alternativer Ansatz ist die Verwendung der booleschen Indizierung, die deutlich effizienter ist. Pandas ermöglicht eine boolesche Indizierung und ermöglicht so eine direkte Unterteilung von Daten auf der Grundlage von Wahr/Falsch-Bewertungen.

<code class="python">df.loc[df['col1'] >= 1, 'col1']</code>

Diese Technik vermeidet die Erstellung neuer Objekte und unnötiges Kopieren und bietet so eine effizientere Möglichkeit zum Filtern von Daten.

Um die Effizienz weiter zu steigern, kann man zu diesem Zweck Hilfsfunktionen schreiben:

<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>

Mit diesen Hilfsfunktionen wird die Anwendung mehrerer Filter unkompliziert:

<code class="python">b1 = b(df, 'col1', ge, 1)
b2 = b(df, 'col1', le, 1)
f(df, b1, b2)</code>

Für Pandas-Versionen 0.13 und höher bietet eine dedizierte Abfragemethode eine noch effizientere Möglichkeit, mehrere Filter anzuwenden und numexpr für Optimierungen zu nutzen:

<code class="python">df.query('col1 <= 1 & 1 <= col1')</code>

Das obige ist der detaillierte Inhalt vonSo filtern Sie Pandas-DataFrames und -Serien effizient anhand mehrerer Kriterien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn