Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Zeilen in einem Pandas-DataFrame basierend auf Spaltenwerten effizient auswählen?

Wie kann ich Zeilen in einem Pandas-DataFrame basierend auf Spaltenwerten effizient auswählen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-25 16:02:15737Durchsuche

How Can I Efficiently Select Rows in a Pandas DataFrame Based on Column Values?

Auswählen von Zeilen basierend auf Spaltenwerten in Pandas

Wie bei jeder relationalen Datenbank müssen Sie möglicherweise bestimmte Zeilen aus einem DataFrame basierend auf den Werten in einer bestimmten Spalte auswählen. Um dies in Pandas nahtlos zu erreichen, stehen Ihnen mehrere Methoden zur Verfügung.

Filtern mit == und isin

Um Zeilen abzurufen, deren Spaltenwerte mit einem bestimmten Wert übereinstimmen, nutzen Sie den ==-Operator:

df.loc[df['column_name'] == some_value]

Wenn Sie umgekehrt Zeilen auswählen möchten, deren Spaltenwerte zu einer Sammlung von Werten gehören, verwenden Sie isin:

df.loc[df['column_name'].isin(some_values)]

Bedingungen mit & kombinieren

Um mehrere Bedingungen in Ihrer Auswahl zu kombinieren, verbinden Sie sie mit &:

df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]

Hinweis: Klammern sind hier entscheidend, um eine ordnungsgemäße Auswertung sicherzustellen.

Ausschließen von Werten mit != und ~

Um Zeilen mit bestimmten Spaltenwerten auszuschließen, verwenden Sie !=:

df.loc[df['column_name'] != some_value]

Alternativ können Sie für Werte außerhalb eines bestimmten Bereichs das isin-Ergebnis mit ~:

df = df.loc[~df['column_name'].isin(some_values)] # .loc is not in-place replacement
negieren

Beispielanwendungen

Bedenken Sie Folgendes 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})
print(df)

Zeilen mit „A“-Wert „foo“ auswählen:

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

Zeilen mit „B“-Werten „eins“ oder „drei“ auswählen:

print(df.loc[df['B'].isin(['one','three'])])

Verbesserte Leistung durch Indizierung

Für häufige Filtervorgänge ist es effizienter, einen Index zu erstellen zuerst:

df = df.set_index(['B'])
print(df.loc['one'])

Alternativ verwenden Sie df.index.isin:

df.loc[df.index.isin(['one','two'])]

Das obige ist der detaillierte Inhalt vonWie kann ich Zeilen in einem Pandas-DataFrame basierend auf Spaltenwerten effizient auswählen?. 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