HOWTO · Pandas

Pandas-Spalte ausschließen

Dieses Tutorial erklärt, wie wir alle Spalten eines DataFrame außer einer bestimmten Spalte erhalten können.

Auf dieser Seite

Um Spalten aus einem Pandas-DataFrame auszuschließen, verwenden Sie drop() zum direkten Entfernen anhand von Spaltennamen, loc für eine Bedingung auf Spaltennamen oder Index.difference(), wenn dessen Sortierverhalten zum Ergebnis passt. Die Beispiele verwenden eine Aktientabelle; jedes Codebeispiel erstellt seine Daten selbst und lässt sich unabhängig ausführen.

Mit loc alle Spalten bis auf eine auswählen

Verwenden Sie loc mit einem vollständigen Zeilenslice und einer booleschen Bedingung für die Spaltennamen. Das Zeilenslice : behält alle Zeilen bei; stocks_df.columns != "Sector" ist für jede Spalte wahr, deren Name nicht Sector lautet, sodass nur diese Spalten übrig bleiben. loc ist ein Zugriffsobjekt zur Auswahl von Zeilen und Spalten und keine Methode, die mit Klammern aufgerufen wird. Die Auswahlsyntax finden Sie in der Dokumentation zur Eigenschaft loc.

Führen Sie dieses Beispiel aus. Die Spaltennamen und Textwerte im unveränderten Codebeispiel bleiben auf Englisch:

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Amazon", "Tesla", "Facebook", "Boeing"],
        "Price(in $)": [3180, 835, 267, 209],
        "Sector": ["Technology", "Technology", "Technology", "Aircraft"],
    }
)

filtered_df = stocks_df.loc[:, stocks_df.columns != "Sector"]
print(filtered_df)

Die resultierende Tabelle enthält die Spalten Stock und Price(in $). Dieses Muster eignet sich, wenn sich der Ausschluss am besten als Regel für Spaltennamen ausdrücken lässt. Ändern Sie den Vergleich, um eine andere benannte Spalte zu behalten oder auszuschließen.

Mit drop() eine oder mehrere Spalten ausschließen

Zum direkten Entfernen anhand von Spaltennamen akzeptiert drop() das Argument columns. Übergeben Sie für eine einzelne Spalte eine Zeichenfolge und für mehrere Spalten eine Liste von Zeichenfolgen. An dieser Schreibweise ist unmittelbar erkennbar, dass sich die Namen auf Spalten beziehen; die entsprechende Variante mit Achsenangabe lautet drop(labels, axis=1). Standardmäßig gibt drop() einen neuen DataFrame zurück und lässt stocks_df unverändert. Weisen Sie das Ergebnis einer Variablen zu, wenn Sie es später verwenden möchten.

Der unveränderte Code sowie die darin angezeigten Spaltennamen und Ausgaben bleiben auf Englisch.

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Amazon", "Tesla", "Facebook", "Boeing"],
        "Price(in $)": [3180, 835, 267, 209],
        "Sector": ["Technology", "Technology", "Technology", "Aircraft"],
    }
)

without_sector = stocks_df.drop(columns="Sector")
without_sector_and_price = stocks_df.drop(columns=["Sector", "Price(in $)"])
print(without_sector)
print(without_sector_and_price)

Das erste Ergebnis behält Stock und Price(in $), das zweite nur Stock. Beide Operationen gehen von der ursprünglichen Tabelle aus, da keiner der Aufrufe sie standardmäßig verändert. Verwenden Sie die Listenform, wenn mehrere Spaltennamen in einem Schritt entfernt werden sollen.

Mit Index.difference() Spalten ausschließen

Index.difference() zieht die auszuschließenden Namen vom Index der Spaltennamen ab. Verwenden Sie den resultierenden Index, um die Spalten auszuwählen. Standardmäßig sortiert difference() die zurückgegebenen Namen. Dadurch kann sich die Spaltenreihenfolge von der ursprünglichen Tabelle unterscheiden, obwohl sich die verbleibenden Daten nicht ändern.

Führen Sie dieses Beispiel aus. Die Spaltennamen und Textwerte im unveränderten Codebeispiel bleiben auf Englisch:

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Amazon", "Tesla", "Facebook", "Boeing"],
        "Price(in $)": [3180, 835, 267, 209],
        "Sector": ["Technology", "Technology", "Technology", "Aircraft"],
    }
)

remaining_columns = stocks_df.columns.difference(["Sector"])
filtered_df = stocks_df[remaining_columns]
print(filtered_df)

Hier sind die verbleibenden Spaltennamen alphabetisch sortiert. Deshalb steht Price(in $) vor Stock, anders als in der ursprünglichen DataFrame. Wenn die ursprüngliche Reihenfolge erhalten bleiben soll, verwenden Sie vorzugsweise drop() oder die oben gezeigte Bedingung mit loc, statt sich auf die standardmäßige Sortierung der Differenz zu verlassen.

Die passende Methode zum Ausschließen von Spalten wählen

Verwenden Sie drop(), wenn Sie die zu entfernenden Spaltennamen kennen und sie möglichst direkt angeben möchten; das Argument columns eignet sich sowohl für einen einzelnen Namen als auch für eine Liste. Wählen Sie loc, wenn die Regel zum Beibehalten oder Entfernen eine Bedingung für Spaltennamen ist, denn die boolesche Maske macht diese Auswahl deutlich. Verwenden Sie Index.difference(), wenn die mengenartige Subtraktion hilfreich und die standardmäßige Sortierung der Spaltennamen akzeptabel ist.

Alle drei Ansätze wählen Spalten aus demselben DataFrame aus, unterscheiden sich aber in der Auswahlregel: ausdrücklich angegebene Namen für drop(), eine boolesche Bedingung für loc und eine Index-Subtraktion für Index.difference(). Prüfen Sie die resultierende Spaltenreihenfolge, wenn nachfolgender Code auf Spaltenpositionen angewiesen ist. Für das gewöhnliche Entfernen benannter Spalten ist drop(columns=...) meist der klarste Ausgangspunkt.