Kolom verwijderen uit pandas DataFrame

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 
Commentaren (17)
Oplossing

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).

Commentaren (6)

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 "", line 1
    df.1
       ^
SyntaxError: invalid syntax
Commentaren (0)