Изтриване на колона от pandas DataFrame

Когато изтривам колона в DataFrame, използвам:

del df['column_name']

И това работи чудесно. Защо не мога да използвам следното?

del df.column_name
  • Тъй като можете да получите достъп до колоната/серията като df.column_name, очаквам това да работи.*

Най-добрият начин да направите това в pandas е да използвате drop:

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

където 1 е номерът на оста (0 за редове и 1 за колони.)

За да изтриете колоната, без да се налага да присвоявате отново df, можете да направите:

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

И накрая, за да изтриете по число на колона вместо по етикет на колона, опитайте това, за да изтриете например 1-ва, 2-ра и 4-та колона:

df = df.drop(df.columns[[0, 1, 3]], axis=1)  # df.columns is zero-based pd.Index 
Коментари (17)
Решение

Както се досещате, правилният синтаксис е

del df['column_name']

Трудно е да се направи така, че del df.column_name да работи просто в резултат на синтактичните ограничения в Python. del df[name] се превежда от Python на df.__delitem__(name) под прикритие.

Коментари (6)

Добра практика е винаги да се използва означението []. Една от причините е, че атрибутната нотация (df.column_name) не работи за номерирани индекси:

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
Коментари (0)