在cols
中,我想在breast_cancer_df
中删除与最后一列对应的class
列。但我得到'DataFrame' object is not callable
错误。
import numpy as np
import seaborn as sns; sns.set(style="ticks", color_codes=True)
import sklearn.datasets
import pandas as pd
breast_cancer = sklearn.datasets.load_breast_cancer()
breast_cancer_df = pd.DataFrame(
data= np.c_[breast_cancer.data, [breast_cancer.target_names[v] for v in breast_cancer.target]],
columns= list(breast_cancer.feature_names).append('class'))
cols = breast_cancer_df(columns=breast_cancer_df.columns[-1], axis=1, inplace=True)
breast_cancer_df[cols] = breast_cancer_df[cols].apply(pd.to_numeric)
g = sns.pairplot(breast_cancer_df, hue='class')
> --------------------------------------------------------------------------- TypeError Traceback (most recent call
> last) <ipython-input-224-76d71f9352d8> in <module>
> 3 data= np.c_[breast_cancer.data, [breast_cancer.target_names[v] for v in breast_cancer.target]],
> 4 columns= list(breast_cancer.feature_names).append('class'))
> ----> 5 cols = breast_cancer_df(columns=breast_cancer_df.columns[-1], axis=1, inplace=True)
> 6 breast_cancer_df[cols] = breast_cancer_df[cols].apply(pd.to_numeric)
> 7 g = sns.pairplot(breast_cancer_df, hue='class')
>
> TypeError: 'DataFrame' object is not callable
语法/逻辑有几个层次是错误的:cols = breast_cancer_df(columns=breast_cancer_df.columns[-1], axis=1, inplace=True)
- 数据帧不是函数,不能使用
breast_cancer_df(...)
。我想你想在这里切片:breast_cancer_df[...]
或使用drop
方法:breast_cancer_df.drop(...)
- 在
drop(...)
中不需要合并columns=...
和axis=1
- 如果您在
drop(...)
中使用inplace=True
,这将不输出任何内容。捕获cols
中的输出是没有意义的。 使用
:
breast_cancer_df = breast_cancer_df.iloc[:, :-1]
或:
breast_cancer_df = breast_cancer_df.drop(columns=['class'])
NB。最好不要使用inplace
,因为它可能在将来被弃用