Når jeg sletter en kolonne i et DataFrame, bruger jeg:
del df['column_name']
Og det fungerer fint. Hvorfor kan jeg ikke bruge følgende?
del df.column_name
Som du kan få adgang til kolonnen/Serien som df.column_name
, forventer jeg, at dette virker.
Den bedste måde at gøre dette på i pandas er at bruge drop
:
df = df.drop('column_name', 1)
hvor 1
er aksen nummeret (0
for rækker og 1
for kolonner.)
Hvis du vil slette kolonnen uden at skulle omfordele df
, kan du gøre følgende:
df.drop('column_name', axis=1, inplace=True)
Endelig, for at slette efter kolonne nummer i stedet for efter kolonne mærke, kan du prøve dette for at slette f.eks. den 1., 2. og 4. kolonne:
df = df.drop(df.columns[[0, 1, 3]], axis=1) # df.columns is zero-based pd.Index
Som du har gættet, er den rigtige syntaks
del df['column_name']
Det er svært at få del df.column_name
til at virke, simpelthen som følge af syntaktiske begrænsninger i Python. del df[name]
bliver oversat til df.__delitem__(name)
i skjul af Python.
Det er god praksis altid at bruge notationen []
. En af grundene er, at attributnotationen (df.column_name
) ikke fungerer for nummererede indekser:
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