Heim > Backend-Entwicklung > Python-Tutorial > Wie wählt man effizient Daten aus einem Pandas-DataFrame basierend auf Spaltenwerten aus?

Wie wählt man effizient Daten aus einem Pandas-DataFrame basierend auf Spaltenwerten aus?

Linda Hamilton
Freigeben: 2024-12-24 01:24:11
Original
423 Leute haben es durchsucht

How to Efficiently Select Data from a Pandas DataFrame Based on Column Values?

So wählen Sie Daten aus einem DataFrame basierend auf Spaltenwerten aus

In SQL würde eine typische Abfrage zum Auswählen von Zeilen basierend auf Spaltenwerten aussehen wie:

SELECT *
FROM table
WHERE column_name = some_value
Nach dem Login kopieren

Um das gleiche Ergebnis bei Pandas zu erzielen, gibt es mehrere Ansätze:

Exakte Werteübereinstimmung

Um Zeilen auszuwählen, in denen der Spaltenwert einem bestimmten Wert (some_value) entspricht, verwenden Sie den ==-Operator in .loc:

df.loc[df['column_name'] == some_value]
Nach dem Login kopieren

Werteinschluss und -ausschluss

Zum Auswählen von Zeilen, in denen sich die Spalte befindet Wenn der Wert in einer Liste (some_values) enthalten ist, verwenden Sie die Funktion isin:

df.loc[df['column_name'].isin(some_values)]
Nach dem Login kopieren

Um bestimmte Werte auszuschließen, negieren Sie die von isin zurückgegebene boolesche Reihe:

df = df.loc[~df['column_name'].isin(some_values)] # Note: This is not an in-place operation
Nach dem Login kopieren

Combining Bedingungen

Mehrere Bedingungen können mit logischen Operatoren wie & (AND) und | kombiniert werden (OR):

df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]
Nach dem Login kopieren

Beachten Sie, dass Klammern erforderlich sind, um die korrekte Operatorpriorität sicherzustellen.

Beispiel

Bedenken Sie den DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
                   'B': 'one one two three two two one three'.split(),
                   'C': np.arange(8), 'D': np.arange(8) * 2})
Nach dem Login kopieren

Zum Auswählen von Zeilen, in denen „A“ gleich ist 'foo':

print(df.loc[df['A'] == 'foo'])
Nach dem Login kopieren

Ergebnisse:

     A      B  C  D
0  foo    one  0  0
2  foo    two  2  4
4  foo    two  4  8
6  foo    one  6  12
7  foo  three  7  14
Nach dem Login kopieren

Optimierung für die Auswahl mehrerer Werte

Für die Auswahl von Zeilen basierend auf mehreren Werten ist es effizienter, einen Index zu erstellen und .loc mit df.index.isin zu verwenden. Dadurch werden mehrere Aufrufe von isin vermieden, was zu einer verbesserten Leistung führt.

df = df.set_index(['B'])
print(df.loc[df.index.isin(['one','two'])])
Nach dem Login kopieren

Erträge:

       A  C  D
B
one  foo  0  0
one  bar  1  2
one  foo  6  12
two  foo  2  4
two  foo  4  8
two  bar  5  10
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie wählt man effizient Daten aus einem Pandas-DataFrame basierend auf Spaltenwerten aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage