перебор элементов в столбце для предварительной обработки с использованием Python - PullRequest
0 голосов
/ 19 октября 2019

Я использую набор данных о жилье для машинного обучения. пытаясь уменьшить размеры набора данных, я хотел объединить 2 столбца, а именно «yr_built» и «yr_renovated», в новый столбец «age» (дома).

Я пытаюсь создать новый возраст столбца из 2 предопределенных столбцов ((year_built) и (year_renovated)). В столбце обновленного года указаны значения, например, год (например, 1991 г., если отремонтировано) или 0, если не отремонтировано.

Логика, которую я пытаюсь здесь использовать, заключается в том, что если ремонт произошел, то возраст здания - текущий год - год обновления, т. Е.

[age = 2019 - year_renovated]

Если ремонт не проводился: возраст здания - текущий год - год строительства, т. Е.

[age = 2019 - year_built]

изображение ppnew-данных отображается следующим

Я попытался использовать цикл for для того же самого, и код выглядит следующим образом:

[enter image description here][1]

for i in pp['age']:
    if pp['yr_renovated'] = 0:
        ppnew['age'] = 2019 - pp['yr_built']
    else:
       ppnew['age'] = 2019 - pp['yr_renovated']

, и я также попытался использовать

for i in pp['age']:
    if pp['yr_renovated'] == 0: #truth value
        ppnew['age'] = 2019 - pp['yr_built']
    else:
       ppnew['age'] = 2019 - pp['yr_renovated']

ошибка говорит о логической ошибке

помогите плз с кодом.

спасибо

1 Ответ

1 голос
/ 19 октября 2019

Я не уверен, какой точности вы хотите достичь (если что-то другое, добавьте ожидаемый результат в вопрос), но мне кажется, что так:

import numpy as np

ppnew['age1'] = np.where(pp['yr_renovated']==0, 2019 - pp['yr_built'] , 2019 - pp['yr_renovated'])

Я предполагаю, что ppnew датафреймуже существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...