我的场景看起来像这样,我已经确定了使用NaN值的列,
nan_cols=tuple(train.columns[train.isnull().sum()>0])
现在,我需要找到这些列和目标变量之间的相关性。所以我尝试了类似的东西,
train[[nan_cols,'SalePrice']].corr()
并得到以下错误:
KeyError:“[('LotFrontage','Alley','MasVnrType','MasVnrArea','BsmtQual',>'BsmtCond','BsmtExposure','BsmtFinType1','BsmtFinType2','电气',>'FireplaceQu' ,'GarageType','GarageYrBlt','GarageFinish','GarageQual',''GarageCond','PoolQC','Fence','MiscFeature')]不在索引中“
那么,有没有办法让我将列名作为大熊猫的元组传递?我也尝试了同样的列表和系列,但由于它们是可变的,所以它没有成功。请建议。
通过这条线
train[[nan_cols,'SalePrice']].corr()
你试图访问行。此外,[nan_cols,'SalePrice']
给出了一个元组和一个对象的列表:[(tuple),object]
一个好的做法是使用loc来定位所需的行/列。要访问列,我建议:
train.loc[:,[*nan_cols,'SalePrice']].corr()
要么
train[:,[*nan_cols,'SalePrice']].corr()
有关*运算符的更多信息,您可以在python tutorial中阅读
希望有所帮助。
尝试下面一个:
nan_cols=[train.columns[train.isnull().sum()>0])
train[nan_cols + ['SalePrice']].corr()
为什么我们需要将列作为元组传递。要在第二行中编制索引,我们只需要一列列。