Bij het verwijderen van een kolom in een DataFrame gebruik ik:
del df['column_name']
En dit werkt fantastisch. Waarom'kan ik niet het volgende gebruiken?
del df.column_name
Aangezien je de kolom/reeks kunt benaderen als df.column_name
, verwacht ik dat dit werkt.
De beste manier om dit in pandas te doen is door drop
te gebruiken:
df = df.drop('column_name', 1)
waarbij 1
het as nummer is (0
voor rijen en 1
voor kolommen).
Om de kolom te verwijderen zonder df
opnieuw te hoeven toewijzen kun je doen:
df.drop('column_name', axis=1, inplace=True)
Tenslotte, om te laten vallen op kolom nummer in plaats van op kolom label, probeer dit om bijvoorbeeld de 1e, 2e en 4e kolom te verwijderen:
df = df.drop(df.columns[[0, 1, 3]], axis=1) # df.columns is zero-based pd.Index
Zoals je hebt geraden, is de juiste syntaxis
del df['column_name']
Het is moeilijk om del df.column_name
te laten werken, simpelweg als gevolg van syntactische beperkingen in Python. del df[naam]
wordt door Python onder de deksels vertaald naar df.__delitem__(naam)
.
Het is een goede gewoonte om altijd de []
notatie te gebruiken. Een van de redenen is dat attribuut notatie (df.column_name
) niet werkt voor genummerde indexen:
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