0Pricing
Pandas & NumPy Academy · Lektion

Spalten nach Muster auswählen

Verwenden Sie filter(like=), filter(regex=) und List Comprehensions, um Spalten auszuwählen, deren Namen einem bestimmten Muster entsprechen.

Spalten nach Muster auswählen ist eine kostenlose Pandas & NumPy Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Pandas & NumPy Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Spalten nach einem Muster auswählen?

DataFrames aus realen Datenquellen enthalten häufig Dutzende oder Hunderte von Spalten, von denen Sie nur selten alle benötigen. Wenn Spalten einer Benennungskonvention folgen – Präfixen wie sales_, Suffixen wie _2023 oder Schlüsselwortmustern –, ist die Auswahl anhand eines Namensmusters deutlich wartbarer, als jede Spalte explizit aufzulisten. Wenn sich das Schema ändert, passt sich die mustergestützte Auswahl automatisch an.

Pandas stellt dafür zwei wichtige Werkzeuge bereit: die Methode filter() und List Comprehensions auf df.columns.

import pandas as pd

df = pd.DataFrame({
    'sales_jan': [100, 200],
    'sales_feb': [150, 250],
    'cost_jan': [50, 80],
    'cost_feb': [60, 90],
    'profit': [140, 280]
})

print(df.columns.tolist())
# ['sales_jan', 'sales_feb', 'cost_jan', 'cost_feb', 'profit']

filter(like=) für die Suche nach Teilzeichenfolgen

DataFrame.filter(like='substring') wählt Spalten aus, deren Namen die angegebene Teilzeichenfolge an beliebiger Stelle enthalten (unter Beachtung der Groß- und Kleinschreibung). Standardmäßig arbeitet die Methode entlang der Spaltenachse und gibt einen neuen DataFrame zurück, der nur die passenden Spalten enthält.

Dies ist das einfachste Werkzeug zur mustergestützten Auswahl: Sie benötigen keine Regex-Kenntnisse, sondern lediglich eine zu suchende Teilzeichenfolge.

import pandas as pd

df = pd.DataFrame({
    'sales_jan': [100, 200],
    'sales_feb': [150, 250],
    'cost_jan': [50, 80],
    'revenue_q1': [110, 210]
})

# Select columns whose name contains 'sales'
sales_cols = df.filter(like='sales')
print(sales_cols)
#    sales_jan  sales_feb
# 0        100        150
# 1        200        250

filter(regex=) für die Mustersuche

DataFrame.filter(regex='pattern') wählt Spalten aus, deren Namen dem angegebenen regulären Ausdruck entsprechen. Dies ist leistungsfähiger als like=, da Sie mit Regex Präfixe, Suffixe, Ziffernpositionen oder komplexe Muster abgleichen können. Der Regex wird an beliebiger Stelle im Spaltennamen abgeglichen (er ist nicht auf den Anfang verankert).

import pandas as pd

df = pd.DataFrame({
    'q1_revenue': [100],
    'q2_revenue': [200],
    'q1_cost': [40],
    'q2_cost': [60],
    'annual_total': [360]
})

# Select columns ending with '_revenue'
revenue_cols = df.filter(regex='_revenue$')
print(revenue_cols)
#    q1_revenue  q2_revenue
# 0         100         200

# Select columns starting with 'q' (quarter columns)
quarter_cols = df.filter(regex='^q')
print(quarter_cols.columns.tolist())
# ['q1_revenue', 'q2_revenue', 'q1_cost', 'q2_cost']

List Comprehension auf df.columns

Für maximale Flexibilität können Sie mit einer List Comprehension über df.columns iterieren und beliebige Python-Zeichenfolgenmethoden anwenden, um Ihre Spaltenliste zu erstellen. Dies funktioniert für startswith, endswith, contains, Prüfungen der Zeichenfolgenlänge und jede benutzerdefinierte Logik, die sich allein mit Regex nicht ausdrücken lässt.

import pandas as pd

df = pd.DataFrame({
    'age': [25, 30],
    'age_group': ['young', 'mid'],
    'income': [50000, 70000],
    'income_tax': [8000, 12000],
    'name': ['Alice', 'Bob']
})

# Select columns that start with 'income'
income_cols = [c for c in df.columns if c.startswith('income')]
print(df[income_cols])
#    income  income_tax
# 0   50000        8000
# 1   70000       12000

Auswahl nach Spaltennamenssuffix

Die Methode str.endswith() des Spalten-Index ist die sauberste Möglichkeit, Spalten anhand eines Suffixes auszuwählen. Pandas-Index-Objekte unterstützen .str-Accessor-Methoden, sodass Sie String-Operationen gleichzeitig auf alle Spaltennamen anwenden und das resultierende boolesche Array verwenden können, um den DataFrame zu filtern.

import pandas as pd

df = pd.DataFrame({
    'revenue_2022': [100],
    'cost_2022': [40],
    'revenue_2023': [150],
    'cost_2023': [55],
    'notes': ['ok']
})

# Use Index.str.endswith for suffix selection
cols_2023 = df.columns[df.columns.str.endswith('_2023')]
print(df[cols_2023])
#    revenue_2023  cost_2023
# 0           150         55

Spalten anhand eines Musters entfernen

Manchmal ist es einfacher, eine Gruppe von Spalten zu exclude, anstatt die beizubehaltenden Spalten anzugeben. Kombinieren Sie die Musterauswahl mit drop() oder verwenden Sie das Komplement: Erstellen Sie eine Liste der zu entfernenden Spalten und rufen Sie anschließend df.drop(columns=cols_to_drop) auf. Alternativ können Sie die Spalten ermitteln, die Sie nicht möchten, und sie an drop übergeben.

import pandas as pd

df = pd.DataFrame({
    'id': [1, 2],
    'name': ['A', 'B'],
    'temp_col1': [0, 0],
    'temp_col2': [0, 0],
    'score': [90, 80]
})

# Drop columns whose name starts with 'temp_'
temp_cols = [c for c in df.columns if c.startswith('temp_')]
cleaned = df.drop(columns=temp_cols)
print(cleaned)
#    id name  score
# 0   1    A     90
# 1   2    B     80

Numerische Spalten mit select_dtypes auswählen

Wenn Sie Spalten eines bestimmten Datentyps und nicht anhand eines Namensmusters auswählen möchten, verwenden Sie df.select_dtypes(include=). Mit include='number' werden alle numerischen Spalten (int und float) ausgewählt, mit include='object' die String-Spalten und mit include='datetime' die Datetime-Spalten.

Das ist besonders nützlich, bevor Sie numerische Aggregationen anwenden – so rufen Sie niemals versehentlich mean() für eine Textspalte auf.

import pandas as pd

df = pd.DataFrame({
    'name': ['Alice', 'Bob'],
    'age': [25, 30],
    'salary': [50000.0, 70000.0],
    'dept': ['Eng', 'HR']
})

# Select only numeric columns
numeric_df = df.select_dtypes(include='number')
print(numeric_df)
#    age   salary
# 0   25  50000.0
# 1   30  70000.0

# Exclude numeric columns
text_df = df.select_dtypes(exclude='number')
print(text_df)
#     name dept
# 0  Alice  Eng
# 1    Bob   HR

filter() auf dem Zeilen-Index mit axis=0

Standardmäßig arbeitet filter() auf Spalten (axis=1). Sie können jedoch auch Zeilen anhand der Indexbezeichnung filtern, indem Sie axis=0 übergeben. Das ist nützlich, wenn Ihr DataFrame aussagekräftige String-Indexbezeichnungen besitzt und Sie Zeilen auswählen möchten, deren Indexbezeichnung einem Muster entspricht – ein weniger verbreiteter, aber praktischer Kniff.

import pandas as pd

df = pd.DataFrame({
    'value': [10, 20, 30, 40]
}, index=['alpha_a', 'beta_b', 'alpha_c', 'gamma_d'])

# Filter rows by index label pattern
alpha_rows = df.filter(like='alpha', axis=0)
print(alpha_rows)
#          value
# alpha_a     10
# alpha_c     30

Muster für die Spaltenauswahl kombinieren

Bei realen Aufgaben zur Spaltenauswahl werden häufig mehrere Strategien kombiniert: Zuerst wird mit einem regulären Ausdruck eine Ausgangsmenge ermittelt, anschließend wird sie mit einer List Comprehension weiter gefiltert. Wenn Sie die Spaltenliste schrittweise erstellen und vor dem Filtern überprüfen, vermeiden Sie stille Fehler, bei denen Sie versehentlich benötigte Spalten entfernen oder unerwünschte einschließen.

import pandas as pd

df = pd.DataFrame(columns=[
    'user_id', 'user_name', 'user_email',
    'product_id', 'product_name', 'product_price',
    'order_total', 'order_date'
])

# Step 1: columns that start with 'user_' or 'order_'
step1 = [c for c in df.columns if c.startswith('user_') or c.startswith('order_')]

# Step 2: exclude email (PII)
final_cols = [c for c in step1 if 'email' not in c]
print(final_cols)
# ['user_id', 'user_name', 'order_total', 'order_date']

Spalten anhand eines Musters neu anordnen

Die mustergestützte Auswahl eignet sich auch zum Neuanordnen von Spalten. Wählen Sie zuerst die gewünschten Spalten aus (z. B. ID und Metadaten) und hängen Sie anschließend die übrigen Spalten in einer bestimmten Reihenfolge an. Eine Neuanordnung macht DataFrames übersichtlicher und stellt sicher, dass Ausgaben eine konsistente Struktur besitzen.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'metric_b': [1], 'metric_a': [2],
    'id': [10], 'label': ['x'],
    'metric_c': [3]
})

# Put id and label first, then sort metric columns alphabetically
id_cols = ['id', 'label']
metric_cols = sorted([c for c in df.columns if c.startswith('metric')])
ordered = df[id_cols + metric_cols]
print(ordered.columns.tolist())
# ['id', 'label', 'metric_a', 'metric_b', 'metric_c']

Praxisbeispiel: Breitformatige Umfragedaten

Ein klassischer Anwendungsfall für die Musterauswahl ist ein breitformatiger Umfragedatensatz, bei dem jede Frage mehrere Spalten erzeugt, etwa q1_score, q1_text, q2_score usw. Sie können alle Score-Spalten mit einem einzigen regulären Ausdruck extrahieren, ihren Mittelwert berechnen und die Analysespalten von den Freitextantworten getrennt halten.

import pandas as pd

survey = pd.DataFrame({
    'respondent_id': [1, 2, 3],
    'q1_score': [4, 3, 5],
    'q2_score': [3, 4, 4],
    'q3_score': [5, 5, 3],
    'q1_comment': ['good', 'ok', 'great'],
    'q2_comment': ['fine', 'nice', 'meh']
})

# All score columns
score_cols = survey.filter(regex='_score$').columns
survey['avg_score'] = survey[score_cols].mean(axis=1)
print(survey[['respondent_id', 'avg_score']])
#    respondent_id  avg_score
# 0              1   4.000000
# 1              2   4.000000
# 2              3   4.000000

Schnelltest

Testen Sie Ihr Verständnis der Auswahl von Spalten anhand eines Musters.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt: filter(like=) wählt Spalten aus, die eine Teilzeichenfolge enthalten, filter(regex=) verwendet reguläre Ausdrücke für eine flexible Mustersuche, und List Comprehensions für df.columns mit Python-String-Methoden bieten maximale Flexibilität. Verwenden Sie select_dtypes(), um nach Datentyp auszuwählen. Als Nächstes lernen Sie, fehlende Werte (NaN) in DataFrames zu erkennen.

Häufig gestellte Fragen

Ist die Lektion „Spalten nach Muster auswählen“ kostenlos?

Ja — der vollständige Text von „Spalten nach Muster auswählen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Pandas & NumPy Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Spalten nach Muster auswählen“?

Verwenden Sie filter(like=), filter(regex=) und List Comprehensions, um Spalten auszuwählen, deren Namen einem bestimmten Muster entsprechen. Du übst Pandas & NumPy Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Pandas & NumPy Academy zu starten?

Keine Vorkenntnisse erforderlich. Pandas & NumPy Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Spalten nach Muster auswählen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Pandas & NumPy Academy-Lektion Code schreiben und ausführen?

Ja. Jede Pandas & NumPy Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Boolesche Indexierung auf DataFrames
  2. Die Methode query()
  3. Filter mit isin() und between()
  4. Spalten nach Muster auswählen
← Zurück zu Pandas & NumPy Academy