Несколько условных выражений в лямбда-функции в pandas кадре данных - PullRequest
1 голос
/ 16 апреля 2020

Я пытаюсь создать новый столбец в моем pandas кадре данных, пропуская несколько условных операторов через лямбда-функцию.

Мой вопрос очень похож на этот: Лямбда, включая if .. .elif ... еще но решение, похоже, не работает для моей версии python (3.7).

Вот что у меня есть:

С одним условие, это работает:

ops['repair_location'] = ops['depot_name'].apply(lambda x: 'Field' if x == 'Field else 'Depot')

Но я хочу добавить еще одно условие. Использование решения связанного вопроса:

ops['repair_location'] = ops['depot_name'].apply(lambda x: 'Field' if x == 'Field' else (x == 'Unknown Location' 'Unknown Location' else 'Depot'))

Возвращает синтаксическую ошибку, указывающую на последний оператор else.

Ответы [ 2 ]

2 голосов
/ 16 апреля 2020

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

import numpy as np
ops['repair_location'] = (
    ops['depot_name']
    .apply(lambda x: np.where(x=='Field', 'Field', np.where(x=='Unknown Location', 'Unknown Location', 'Depot')))
)
2 голосов
/ 16 апреля 2020

Мы обычно делаем np.select

s1=ops['depot_name']=='Field'
s2=ops['depot_name']=='Unknown Location'
ops['repair_location']=np.select([s1,s2],['Field','Unknown Location'],default='Depot')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...