将列名从元组传递到Pandas

问题描述 投票:2回答:2

我的场景看起来像这样,我已经确定了使用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')]不在索引中“

那么,有没有办法让我将列名作为大熊猫的元组传递?我也尝试了同样的列表和系列,但由于它们是可变的,所以它没有成功。请建议。

python pandas indexing data-science namedtuple
2个回答
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中阅读

希望有所帮助。


0
投票

尝试下面一个:

nan_cols=[train.columns[train.isnull().sum()>0])
train[nan_cols + ['SalePrice']].corr()

为什么我们需要将列作为元组传递。要在第二行中编制索引,我们只需要一列列。

© www.soinside.com 2019 - 2024. All rights reserved.