Heim >Backend-Entwicklung >Python-Tutorial >So filtern Sie Pandas-DataFrames und -Serien effizient anhand mehrerer Kriterien
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!