How to update pandas DataFrame.drop() for Future Warning – all arguments of DataFrame.drop except for the argument ‘labels’ will be keyword-only

df = df.drop('market', 1).rename(columns={'abb':'t1_abb'}) generates the warning FutureWarning: In a future version of pandas all arguments of DataFrame.drop except for the argument 'labels' will be keyword-only.

market is the column we want to drop, and we pass the 1 as a second parameter for axis (0 for index, 1 for columns, so we pass 1).

How can we change this line of code now so that it is not a problem in the future version of pandas / to resolve the warning message now?

Answer

From the documentation, pandas.DataFrame.drop has the following parameters:

Parameters

  • labels: single label or list-like Index or column labels to drop.

  • axis: {0 or ‘index’, 1 or ‘columns’}, default 0 Whether to drop labels from the index (0 or ‘index’) or columns (1 or ‘columns’).

  • index: single label or list-like Alternative to specifying axis (labels, axis=0 is equivalent to index=labels).

  • columns: single label or list-like Alternative to specifying axis (labels, axis=1 is equivalent to columns=labels).

  • level: int or level name, optional For MultiIndex, level from which the labels will be removed.

  • inplace: bool, default False If False, return a copy. Otherwise, do operation inplace and return None.

  • errors: {‘ignore’, ‘raise’}, default ‘raise’ If ‘ignore’, suppress error and only existing labels are dropped.

Moving forward, only labels can be positional.


So, for this example, the drop code should be as follows:

df = df.drop('market', axis=1)

or (more legibly) with columns:

df = df.drop(columns='market')