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 250filter(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 12000Auswahl 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 55Spalten 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 80Numerische 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 HRfilter() 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 30Muster 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.000000Schnelltest
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
- Boolesche Indexierung auf DataFrames
- Die Methode query()
- Filter mit isin() und between()
- Spalten nach Muster auswählen