Как я могу использовать pandas assign для создания нового столбца с несколькими условиями?

У меня есть пандас dataframe со следующими столбцами:

Date, Variable 1, rank_pct

Я пытаюсь использовать assign для создания нового столбца с именем "ls", в котором есть 1, -1 или 0.

  1. Если rank_pct <0,10, поставьте 1 в столбце ls
  2. Если rank_pct>0,90, поместите -1 в столбец ls.
  3. Если rank_pct - что-то еще, поместите 0 в столбце.

Я не хочу использовать цикл for для итераций по каждой строке в столбце rank_pct, и я уже пробовал следующее (которое возвращает столбец с True/False:

data = data.assign(ls= data['rank_pct']<.10)

Есть ли какая-нибудь команда, которую я могу поместить в скобки, чтобы преобразовать T/F в 1, -1 и 0?

1 ответ

Вы можете использовать вложенные np.where:

data.assign(ls=np.where(data.rank_pct<.1, 1,
                        np.where(data.rank_pct>.9, -1, 0)))
Другие вопросы по тегам