Передача имен столбцов из кортежа в Pandas - PullRequest
2 голосов
/ 09 марта 2019

Мой сценарий выглядит следующим образом, где я идентифицировал столбцы, имеющие значения 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' ', GarageFinish', '> GarageFinish', '>',' PoolQC ',' Fence ',' MiscFeature ')] нет в индексе "

Итак, есть ли способ передать мне имена столбцов в виде кортежа в пандах?Я попробовал то же самое со списком и сериями, но так как они были изменяемыми, это не сработало.Пожалуйста, предложите.

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Попробуйте ниже одного:

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

Почему мы должны передавать столбцы как кортеж.Для индексации во второй строке нам нужен только список столбцов.

0 голосов
/ 09 марта 2019

По этой строке

train[[nan_cols,'SalePrice']].corr()

вы пытаетесь получить доступ к строкам . Также [nan_cols,'SalePrice'] дает список из кортежа и объекта : [(tuple),object]

Хорошей практикой является использование loc , чтобы найти необходимые строки / столбцы. Для доступа к столбцам я бы предложил:

train.loc[:,[*nan_cols,'SalePrice']].corr()

или

train[:,[*nan_cols,'SalePrice']].corr()

Подробнее о * операторе вы можете прочитать в руководстве по Python

Надеюсь, это помогло.

...