Pandas drop index类型列

时间:2015-09-01 09:04:27

标签: python pandas

我想从pandas.DataFrame删除多个列,但无法执行此操作。

In [10]: object_columns = X.select_dtypes(['object']).columns

In [10]: type(object_columns)

Out[10]: pandas.core.index.Index

In [11]: X = X.drop(object_columns, inplace=True, axis=1)

ValueError: labels ['VAR_0001' 'VAR_0005' 'VAR_0044' 'VAR_0073'] not contained in axis

我更改了代码并且它没有帮助:

In [12]: X = X.drop(X[object_columns], inplace=True, axis=1)

KeyError: "['VAR_0001' 'VAR_0005' 'VAR_0044' 'VAR_0073'] not in index"

有人可以解释我做错了吗?

2 个答案:

答案 0 :(得分:4)

您需要X.drop(object_columns, inplace=True, axis=1)

传递inplace=True它对对象进行操作并且不返回任何内容,因此您不应该将其分配回来,请参阅docs

所以你不需要:

X = X.drop(object_columns, inplace=True, axis=1)

X.drop(object_columns, inplace=True, axis=1)

如果你通过了inplace=False这是默认的:

X = X.drop(object_columns, inplace=False, axis=1)

然后它会起作用

答案 1 :(得分:1)

您可以尝试以下

如果要删除“索引”列,请使用

X.reset_index(drop=True)

此处删除的索引列将作为新列添加。

如果您只想删除索引列,请使用

X.drop(['list of column names, seperated by comma'], inplace=True, axis=1)

如果您只想删除一些列,但不只有一个使用以下

if (!$active) { return 'You are not active'; } if (!$paid) { return 'You have not paid'; } return $amount;