将列名称从元组传递到Pandas

时间:2019-03-09 06:08:26

标签: python pandas indexing data-science namedtuple

我的情况如下所示,其中我使用标识了具有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进行同样的操作,但是由于它们是易变的,因此没有奏效。请提出建议。

2 个答案:

答案 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()

为什么我们需要将列作为元组传递。要在第二行建立索引,我们只需要一个列列表即可。