我的情况如下所示,其中我使用标识了具有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','Electrical',> 'FireplaceQu','GarageType','GarageYrBlt','GarageFinish','GarageQual',>'GarageCond','PoolQC','Fence','MiscFeature')]不在索引中”
那么,有没有办法让我将列名称作为元组传递给熊猫?我也尝试过对list和Series进行同样的操作,但是由于它们是易变的,因此没有奏效。请提出建议。
答案 0 :(得分:0)
通过此行
train[[nan_cols,'SalePrice']].corr()
您尝试访问行。此外,[nan_cols,'SalePrice']
给出了一个元组和一个对象的列表:[(tuple),object]
一种好的做法是使用loc来查找所需的行/列。要访问列,我建议:
train.loc[:,[*nan_cols,'SalePrice']].corr()
或
train[:,[*nan_cols,'SalePrice']].corr()
有关*运算符的更多信息,您可以在python tutorial中阅读
希望有帮助。
答案 1 :(得分:0)
尝试以下一项:
nan_cols=[train.columns[train.isnull().sum()>0])
train[nan_cols + ['SalePrice']].corr()
为什么我们需要将列作为元组传递。要在第二行建立索引,我们只需要一个列列表即可。