Spalte aus Pandas DataFrame löschen

Wenn ich eine Spalte in einem DataFrame lösche, verwende ich:

del df['column_name']

Und das funktioniert wunderbar. Warum kann ich nicht das Folgende verwenden?

del df.column_name

Da Sie auf die Spalte/Serie als df.column_name zugreifen können, erwarte ich, dass dies funktioniert.

Der beste Weg, dies in Pandas zu tun, ist die Verwendung von drop:

df = df.drop('column_name', 1)

wobei 1 die Achsennummer ist (0 für Zeilen und 1 für Spalten.)

Um die Spalte zu löschen, ohne df neu zuweisen zu müssen, können Sie dies tun:

df.drop('column_name', axis=1, inplace=True)

Um schließlich nach der Spaltennummer statt nach der Spaltenbezeichnung zu löschen, versuchen Sie dies, um z.B. die Spalten 1, 2 und 4 zu löschen:

df = df.drop(df.columns[[0, 1, 3]], axis=1)  # df.columns is zero-based pd.Index 
Kommentare (17)
Lösung

Wie Sie schon erraten haben, ist die richtige Syntax

del df['column_name']

Es ist schwierig, del df.column_name zum Laufen zu bringen, einfach aufgrund der syntaktischen Beschränkungen in Python. del df[name] wird von Python heimlich in df.__delitem__(name) übersetzt.

Kommentare (6)

Es ist gute Praxis, immer die [] Notation zu verwenden. Ein Grund dafür ist, dass die Attributnotation (df.column_name) für nummerierte Indizes nicht funktioniert:

In [1]: df = DataFrame([[1, 2, 3], [4, 5, 6]])

In [2]: df[1]
Out[2]:
0    2
1    5
Name: 1

In [3]: df.1
  File "", line 1
    df.1
       ^
SyntaxError: invalid syntax
Kommentare (0)