Wie man ganz einfach Werte in einer Spalte eines Pandas DataFrame sucht
Updated on
Das Suchen von Werten in einer Spalte eines Pandas DataFrame ist ein grundlegender Schritt beim Filtern, Bereinigen und Analysieren von Daten. Pandas bietet viele leistungsfähige Möglichkeiten zum Suchen – darunter Boolean-Indexing, isin(), query() und String-Operationen –, die diese Aufgabe schnell und intuitiv machen.
Dieser aktualisierte Leitfaden behandelt die nützlichsten und modernen Techniken zum Suchen von Werten in einem DataFrame, inklusive Beispielen, die du direkt in realen Workflows anwenden kannst.
Möchtest du schnell Datenvisualisierungen aus Pandas DataFrames ganz ohne Code erstellen?
PyGWalker verwandelt dein DataFrame in eine interaktive, Tableau-ähnliche Oberfläche direkt im Jupyter Notebook.
PyGWalker on GitHub (opens in a new tab)
Pandas DataFrame Grundlagen
Ein Pandas DataFrame ist eine zweidimensionale tabellarische Struktur mit benannten Zeilen und Spalten. Hier ein einfaches Beispiel:
import pandas as pd
data = {
'Name': ['John', 'Emma', 'Peter', 'David', 'Sophie'],
'Age': [27, 21, 24, 30, 29],
'Gender': ['Male', 'Female', 'Male', 'Male', 'Female'],
'City': ['New York', 'London', 'Paris', 'Tokyo', 'Rio de Janeiro']
}
df = pd.DataFrame(data)
print(df)Output:
Name Age Gender City
0 John 27 Male New York
1 Emma 21 Female London
2 Peter 24 Male Paris
3 David 30 Male Tokyo
4 Sophie 29 Female Rio de JaneiroWerte in einer DataFrame-Spalte suchen
1. Nach einem exakten Wert suchen (Boolean-Indexing)
result = df[df['Age'] == 27]
print(result)Output:
Name Age Gender City
0 John 27 Male New YorkDu kannst alle Vergleichsoperatoren verwenden:
| Operator | Bedeutung |
|---|---|
== | gleich |
!= | ungleich |
> / < | größer / kleiner |
>= / <= | größer oder gleich / kleiner oder gleich |
Beispiel: Zeilen finden, in denen Age ≥ 25 ist
df[df['Age'] >= 25]2. Nach mehreren Werten mit isin() suchen
cities = ['Paris', 'Tokyo']
df[df['City'].isin(cities)]Output:
Name Age Gender City
2 Peter 24 Male Paris
3 David 30 Male TokyoVerwende ~df['col'].isin(), um Werte auszuschließen.
3. Mit query() suchen (lesbar & schnell)
query() ermöglicht das Filtern von Zeilen mit einer SQL-ähnlichen Syntax – ideal für bessere Lesbarkeit.
df.query("Age == 27")Oder mehrere Bedingungen:
df.query("Age > 25 and Gender == 'Female'")Das führt oft zu übersichtlicherem Code als verschachteltes Boolean-Indexing.
4. Nach String-Mustern suchen (str.contains())
Nützlich zum Filtern von Textspalten.
Enthält einen Teilstring
df[df['City'].str.contains('on', case=False, na=False)]Beginnt oder endet mit
df[df['Name'].str.startswith('J')]
df[df['City'].str.endswith('o')]5. Nach fehlenden / nicht fehlenden Werten suchen
df[df['City'].isna()] # fehlende Werte
df[df['City'].notna()] # nicht fehlende Werte6. Spaltenübergreifend suchen
Zeilen finden, in denen irgendeine Spalte einem Wert entspricht:
df[df.eq('Male').any(axis=1)]Zeilen finden, in denen alle Bedingungen erfüllt sind:
df[(df['Gender'] == 'Female') & (df['Age'] > 25)]Performance-Tipps (realistisch & korrekt)
Einige Performance-Tipps wurden in älteren Tutorials missverständlich dargestellt. Hier sind die korrekten Hinweise:
✔ 1. Spalten in category umwandeln, wenn sie viele Wiederholungen haben
Das beschleunigt Vergleiche:
df['City'] = df['City'].astype('category')✔ 2. Für sehr große Datensätze NumPy-Arrays verwenden
import numpy as np
ages = df['Age'].to_numpy()
df[ages == 27]✔ 3. apply() zum Suchen vermeiden
Vektorisierte Operationen (Boolean-Indexing, isin(), query()) sind immer schneller.
❌ Entfernt: „.loc[] ist schneller als Boolean-Indexing“
Das ist falsch – intern verhalten sie sich gleich.
.loc[] dient der ausdrucksbasierten (labelbasierten) Selektion, nicht der Beschleunigung.
⚠ Hinweis zu searchsorted()
searchsorted() funktioniert nur korrekt, wenn die Spalte sortiert ist und garantiert nicht, dass der Wert wirklich existiert.
Beispiel:
df_sorted = df.sort_values('Age')
idx = df_sorted['Age'].searchsorted(27)Das liefert die Einfügeposition – nicht unbedingt die Zeile mit Age = 27.
Verwende es nur für fortgeschrittene Workflows.
Fazit
Das Suchen von Werten in einer Pandas-Spalte ist zentral für Datenexploration und Datenbereinigung. Pandas stellt viele effiziente Methoden bereit:
- Boolean-Indexing für exakte Treffer
isin()für mehrere Wertequery()für sauberes, SQL-ähnliches Filtering- String-Suche mit
str.contains() - Filtern nach fehlenden Werten
- Filtern über mehrere Spalten
Mit diesen Methoden kannst du die benötigten Daten schnell, präzise und übersichtlich extrahieren.
Links
- How to Convert a Pandas DataFrame to a Python List
- How to Sort a Pandas DataFrame by Index
- How to Convert a Pandas Series to a DataFrame
- How to Create a List of Column Names in PySpark Dataframe
- How to Append a Pandas DataFrame in Python
- How to Rename a Column in Pandas DataFrame
Häufig gestellte Fragen
-
Wie suche ich nach einem bestimmten Wert in einer DataFrame-Spalte?
Verwende Boolean-Indexing:df[df['Age'] == 27] -
Wie rufe ich einen bestimmten Wert aus einer Spalte ab?
Verwende Zeilenindex + Spaltennamen:df['Age'][0] -
Wie bekomme ich schnell einen einzelnen Wert?
Verwende.atoder.iat:df.at[0, 'Age'] df.iat[0, 1]
;
