Όταν διαγράφω μια στήλη σε ένα 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