Pri odstraňovaní stĺpca v DataFrame používam:
del df['column_name']
A funguje to skvele. Prečo nemôžem použiť nasledujúce?
del df.column_name
Ako môžete pristupovať k stĺpcu/seriálu ako df.názov_slúpca
, očakávam, že to bude fungovať.
Najlepší spôsob, ako to urobiť v programe pandas, je použiť drop
:
df = df.drop('column_name', 1)
kde 1
je číslo osy (0
pre riadky a 1
pre stĺpce.)
Ak chcete odstrániť stĺpec bez toho, aby ste museli znovu priradiť df
, môžete urobiť:
df.drop('column_name', axis=1, inplace=True)
A nakoniec, ak chcete odstrániť stĺpec podľa čísla namiesto stĺpca podľa názvu, skúste vymazať napr. 1., 2. a 4. stĺpec takto:
df = df.drop(df.columns[[0, 1, 3]], axis=1) # df.columns is zero-based pd.Index
Ako ste uhádli, správna syntax je
del df['column_name']
Je'ťažké zabezpečiť, aby del df.column_name
fungoval jednoducho v dôsledku syntaktických obmedzení jazyka Python. del df[name]
sa v Pythone pod pokrievkou prekladá na df.__delitem__(name)
.
Vždy je dobré používať zápis []
. Jedným z dôvodov je, že atribútový zápis (df.column_name
) nefunguje pre číslované indexy:
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