我想从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"
有人可以解释我做错了吗?
答案 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;