我想删除多个列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
Run Code Online (Sandbox Code Playgroud)
我更改了代码,但没有帮助:
In [12]: X = X.drop(X[object_columns], inplace=True, axis=1)
KeyError: "['VAR_0001' 'VAR_0005' 'VAR_0044' 'VAR_0073'] not in index"
Run Code Online (Sandbox Code Playgroud)
谁能解释我做错了什么?
你需要做 X.drop(object_columns, inplace=True, axis=1)
通过传递inplace=True它对对象进行操作并且不返回任何内容,因此您不应该将其分配回来,请参阅文档。
所以你不需要:
X = X.drop(object_columns, inplace=True, axis=1)
Run Code Online (Sandbox Code Playgroud)
只是
X.drop(object_columns, inplace=True, axis=1)
Run Code Online (Sandbox Code Playgroud)
如果你通过inplace=False这是默认值:
X = X.drop(object_columns, inplace=False, axis=1)
Run Code Online (Sandbox Code Playgroud)
那么它会起作用