Объединить логический тест в функции if - PullRequest
1 голос
/ 29 апреля 2020

У меня есть датафрейм, и внутри него я создаю логический тест, затем оператор if / function и затем лямбда-функцию для использования логического значения и функцию для записи в другой столбец с последующим удалением столбцов логического теста , Есть ли способ объединить хотя бы булев тест с оператором / функцией if? Должен быть более эффективный способ сделать это.

код:

df['note1'] = df['child'].isnull()
df['note2'] = df['parent'].isnull()

def b(row):
    if row['note1'] == True:
        return 'check1'
    elif row['note2'] == True:
        return 'check2'
    else:
        return

df['check status'] = df.apply(lambda row: b(row), axis=1)

del df['note1']
del df['note2']

Приведенный выше код служит своей цели и выполняет мои цели, но я пытаюсь увидеть, есть ли способ написать это более эффективно и как минимум объединить логический тест с функцией.

Спасибо,

Джон

1 Ответ

0 голосов
/ 29 апреля 2020

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

df['check status'] = np.select((df['child'].isnull(), df['parent'].isnull()),
                               ('check1','check2'),
                               np.nan
                              )
...