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
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.
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 "<ipython-input-3-e4803c0d1066>", line 1
df.1
^
SyntaxError: invalid syntax