Follow the doc:
DataFrame is a 2-dimensional labeled data structure with columns of potentially different types.
And pandas.DataFrame.drop:
Drop specified labels from rows or columns.
So, I think we should stick with df.drop. Why? I think the pros are:
-
It gives us more control of the remove action:
# This will return a NEW DataFrame object, leave the original `df` untouched. df.drop('a', axis=1) # This will modify the `df` inplace. **And return a `None`**. df.drop('a', axis=1, inplace=True) -
It can handle more complicated cases with it’s args. E.g. with
level, we can handle MultiIndex deletion. And witherrors, we can prevent some bugs. -
It’s a more unified and object oriented way.
And just like @jezrael noted in his answer:
Option 1: Using key word del is a limited way.
Option 3: And df=df[['b','c']] isn’t even a deletion in essence. It first select data by indexing with [] syntax, then unbind the name df with the original DataFrame and bind it with the new one (i.e. df[['b','c']]).