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
Linda HamiltonOriginal
2024-12-24 01:24:11452Durchsuche

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

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]

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

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

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

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

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

print(df.loc[df['A'] == 'foo'])

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

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'])])

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

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!

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