Pandas filtern nach mehreren Bedingungen

Pandas filtern nach mehreren Bedingungen

Die beliebteste Datenframe -Manipulation in Pandas ist die Filterung. In diesem Beitrag werden wir uns untersuchen. In Pandas gibt es mehrere Methoden zum Extrahieren von Daten aus dem Datenrahmen unter Verwendung mehrerer Bedingungen. In den folgenden Beispielen zeigen wir, wie verschiedene Funktionen verwendet werden, um den Datenrahmen mit mehreren Bedingungen zu filtern.

Methode 1: Verwenden von Eval ()

Eval () wird verwendet, um einen Ausdruck zu bewerten. Daher fungiert es als Filter im DataFrame und gibt die Zeilen zurück, die mit der Bedingung übereinstimmen.

Syntax

Pandas.DataFrame_Object [DataFrame_Object.Eval („Bedingungen“)]

Beispiel 1

Erstellen wir einen Datenrahmen mit 6 Spalten und 4 Zeilen und geben die Zeilen basierend auf der Gebührspalte zurück, in der die ID größer als 20 ist, und der Name endet mit "N".

Pandas importieren
Numpy importieren
Bemerkungen = Pandas.DataFrame ([[23, 'Sravan', 'Pass', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'Sahaja', 'Pass', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], Spalten = ['ID', 'Name', 'Status', 'Fee', 'Points1', 'Punkte2'])
drucken (Bemerkungen)
drucken()
# Geben Sie die Zeilen basierend auf der Gebührspalte zurück, in der die ID größer als 20 ist und der Name mit „N“ endet.
drucken (Bemerkungen [Bemerkungen.Eval (“ID> 20 & Name.str.Endswith ('n').Werte")])

Ausgang

ID -Name Statusgebühr Punkte1 Punkte2
0 23 Sravan Pass 1000 34 56
1 21 SIVA FAIL 400 32 45
2 20 Sahaja Pass 100 78 90
3 22 Suryam Fail 450 76 56
ID -Name Statusgebühr Punkte1 Punkte2
0 23 Sravan Pass 1000 34 56

Es gibt nur eine Zeile, so dass der Name mit 'n' endet, und die ID ist größer als 20. Hier haben wir zwei Bedingungen mit dem „und“ Operator angegeben.

Beispiel 2

Geben Sie die Zeilen anhand der Spalte "Gebühr" zurück, in der die ID größer als 20 und "Punkte1" weniger als 35 ist und der Name mit "s" beginnt.

Pandas importieren
Numpy importieren
Bemerkungen = Pandas.DataFrame ([[23, 'Sravan', 'Pass', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'Sahaja', 'Pass', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], Spalten = ['ID', 'Name', 'Status', 'Fee', 'Points1', 'Punkte2'])
# Geben Sie die Zeilen basierend auf der Gebührspalte zurück, in der der ID größer als 20 ist und mit "S" und den Punkten von weniger als 35 beginnt.
drucken (Bemerkungen [Bemerkungen.Eval ("ID> 20 & Name.str.Startswith ('s').Werte & Punkte1 < 35")])

Ausgang

ID -Name Statusgebühr Punkte1 Punkte2
0 23 Sravan Pass 1000 34 56
1 21 SIVA FAIL 400 32 45

Zwei Zeilen entsprechen der Bedingung.

Methode 2: Verwenden von LOC []

Syntax

DataFrame_Object.loc []

Parameter

Indexbezeichnung: Liste der Zeichenfolgen oder einer einzelnen Zeichenfolge der Indexnamen der Zeile.

Beispiel 1

Erstellen Sie einen Datenrahmen mit dem Namen "Bemerkungen" mit 6 Spalten. Lassen Sie uns die Zeilen basierend auf der Gebührenspalte zurückgeben, in der die Gebühr größer als 300 und Punkte von weniger als 76 ist.

Pandas importieren
Bemerkungen = Pandas.DataFrame ([[23, 'Sravan', 'Pass', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'Sahaja', 'Pass', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], Spalten = ['ID', 'Name', 'Status', 'Fee', 'Points1', 'Punkte2'])
# Zeigen Sie den DataFrame - Anmerkungen an
drucken (Bemerkungen)
drucken()
# Geben Sie die Zeilen auf der Grundlage der Gebührenspalte zurück, in der die Gebühr größer als 300 und Punkte von weniger als 76 ist
Druck (Bemerkungen.loc [(Anmerkungen ['Gebühr']> 300) & (Anmerkungen ['Punkte2'] < 76)])

Ausgang

ID -Name Statusgebühr Punkte1 Punkte2
0 23 Sravan Pass 1000 34 56
1 21 SIVA FAIL 400 32 45
2 20 Sahaja Pass 100 78 90
3 22 Suryam Fail 450 76 56
ID -Name Statusgebühr Punkte1 Punkte2
0 23 Sravan Pass 1000 34 56
1 21 SIVA FAIL 400 32 45
3 22 Suryam Fail 450 76 56

Es gibt 3 Zeilen, bei denen die Gebühr größer als 300 und Punkte von weniger als 76 ist. Hier haben wir zwei Bedingungen mit dem "&" -Operator angegeben.

Beispiel 2:

Erstellen Sie einen Datenrahmen mit dem Namen "Bemerkungen" mit 6 Spalten. Lassen Sie uns die Zeilen basierend auf der Gebührenspalte zurückgeben, in der die Gebühr größer als 300 und Punkte von weniger als 76 ist.

Pandas importieren
Bemerkungen = Pandas.DataFrame ([[23, 'Sravan', 'Pass', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'Sahaja', 'Pass', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], Spalten = ['ID', 'Name', 'Status', 'Fee', 'Points1', 'Punkte2'])
# Geben Sie die Zeilen auf der Grundlage der Gebührspalte zurück, in der die Gebühr größer als 300 und Punkte von weniger als 76 ist, und der Status ist "scheitern".
Druck (Bemerkungen.loc [(Anmerkungen ['Gebühr']> 300) & (Anmerkungen ['Punkte2'] < 76) & (remarks['status'] == 'fail')])

Ausgang

ID -Name Statusgebühr Punkte1 Punkte2
1 21 SIVA FAIL 400 32 45
3 22 Suryam Fail 450 76 56

Es gibt 2 Zeilen, in denen die Gebühr größer als 300 und Punkte von mehr als 76 liegt, und der Status ist "scheitern". Hier haben wir drei Bedingungen mit dem "&" -Operator angegeben.

Methode 3: Verwenden von Query ()

query () nimmt die Bedingung als Ausdruck so, dass Zeilen im Datenrahmen basierend auf dem angegebenen Ausdruck filtriert werden. Stellen Sie sicher, dass Sie einen Ausdruck in "" schreiben müssen "".

Syntax

Pandas.DataFrame_Object.Abfrage ("Ausdruck")

Beispiel

Lassen Sie uns die Zeilen basierend auf der Gebührenspalte zurückgeben, in der die Gebühr größer als 300 und Punkte von weniger als 76 ist.

Pandas importieren
Bemerkungen = Pandas.DataFrame ([[23, 'Sravan', 'Pass', 1000,34,56],
[21, 'Siva', 'Fail', 400,32,45],
[20, 'Sahaja', 'Pass', 100,78,90],
[22, 'Suryam', 'Fail', 450,76,56]
], Spalten = ['ID', 'Name', 'Status', 'Fee', 'Points1', 'Punkte2'])
# Geben Sie die Zeilen auf der Grundlage der Gebührenspalte zurück, in der die Gebühr größer als 300 und Punkte von weniger als 76 ist
Druck (Bemerkungen.Abfrage ("Gebühr> 300 und Punkte2 < 76"))

Ausgang

ID -Name Statusgebühr Punkte1 Punkte2
0 23 Sravan Pass 1000 34 56
1 21 SIVA FAIL 400 32 45
3 22 Suryam Fail 450 76 56

Es gibt 3 Zeilen, bei denen die Gebühr größer als 300 und Punkte von weniger als 76 ist. Hier haben wir zwei Bedingungen mit dem 'und' Operator angegeben.

Abschluss

Die Filterung ist der am häufigsten verwendete Datenrahmenbetrieb in Pandas. In diesem Leitfaden haben wir darüber nachgedacht, wie Sie den Datenrahmen unter Verwendung mehrerer Bedingungen filtern. Nachdem Sie diesen Artikel behandelt haben, können Sie die Daten möglicherweise selbst filtern, indem Sie selbst mehrere Bedingungen verwenden. In diesem Artikel haben wir einige Beispiele implementiert, um Ihnen beizubringen, wie Sie Daten aus dem DataFrame mit Hilfe mehrerer Bedingungen mithilfe der verschiedenen Funktionen in Pandas und numpy wie loc [], query () und eval () extrahieren können.