1

我有一个数据框,在其中,我正在创建一个布尔测试,然后是一个 if 语句/函数,然后是一个 lambda 函数来利用布尔值和一个函数来写入另一列,然后删除布尔测试列。有没有办法至少将布尔测试与 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']

上面的代码达到了它的目的并实现了我的目标,但我想看看是否有一种方法可以更有效地编写它,并且至少将布尔测试与函数结合起来。

谢谢,

约翰

4

1 回答 1

0

您可以使用np.select

df['check status'] = np.select((df['child'].isnull(), df['parent'].isnull()),
                               ('check1','check2'),
                               np.nan
                              )
于 2020-04-28T23:56:59.697 回答