Как создать оператор logi c для кадра данных в python с несколькими условиями? - PullRequest
0 голосов
/ 06 марта 2020

Мой фрейм данных выглядит примерно так

Работа

Рабочие классы

Управление

Самостоятельно занятый

Администратор

студент

техник

Я хочу создать новый столбец под названием «сделки», в котором будет «да» для каждой записи, где задание является рабочим или техническим специалистом.

Вот что я сейчас использую:

df['trades'] = np.where(df['job']=="blue-collar", 'yes', df['trades'] = np.where(df['job']=="technician", 'yes','no'))

Но это не сработало

Любая помощь приветствуется!

Ответы [ 3 ]

1 голос
/ 07 марта 2020

Если вы хотите работать с условиями, вы можете сделать это:

df.loc[:,"trades"] = "No"
df.loc[(df['job']=="blue-collar")|(df['job']=="technician"),"trades"] = "Yes"

Wih loc, вы можете добавить новые столбцы в ваш фрейм данных. Этот метод принимает 2 параметра в скобках, первый - это строки, которые вы хотите изменить, поэтому если вы пишете :, вы ссылаетесь на весь фрейм данных, а второй - на имя столбца.

Поэтому, если вы напишите df['job']=="blue-collar" в качестве первого параметра, он изменит только те строки, которые соответствуют этому условию.

0 голосов
/ 07 марта 2020

Я бы использовал .isin или .str.contains метод с np.where

df["trades"] = np.where(
    df["job"].isin(["blue-collar", "technician"]), 
    # df["job"].str.contains("blue-collar|technicial), as an alternative
    "yes",
    "no"
)
0 голосов
/ 07 марта 2020
df.loc[:,"trades"] = "no"
df.loc[df['job']=="blue-collar","trades"] = "yes"
df.loc[df['job']=="technician","trades"] = "yes"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...