Skip to content

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)

PyGWalker for Data visualization (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 Janeiro

Werte 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 York

Du kannst alle Vergleichsoperatoren verwenden:

OperatorBedeutung
==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  Tokyo

Verwende ~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 Werte

6. 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 Werte
  • query() 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


Häufig gestellte Fragen

  1. Wie suche ich nach einem bestimmten Wert in einer DataFrame-Spalte?
    Verwende Boolean-Indexing:

    df[df['Age'] == 27]
  2. Wie rufe ich einen bestimmten Wert aus einer Spalte ab?
    Verwende Zeilenindex + Spaltennamen:

    df['Age'][0]
  3. Wie bekomme ich schnell einen einzelnen Wert?
    Verwende .at oder .iat:

    df.at[0, 'Age']
    df.iat[0, 1]

;