Когато изтривам колона в 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
Както се досещате, правилният синтаксис е
del df['column_name']
Трудно е да се направи така, че del df.column_name
да работи просто в резултат на синтактичните ограничения в Python. del df[name]
се превежда от Python на df.__delitem__(name)
под прикритие.
Добра практика е винаги да се използва означението []
. Една от причините е, че атрибутната нотация (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 "<ipython-input-3-e4803c0d1066>", line 1
df.1
^
SyntaxError: invalid syntax