【问题标题】:Combine boolean test within if function在 if 函数中组合布尔测试
【发布时间】:2020-04-28 23:19:32
【问题描述】:

我有一个数据框,在其中,我正在创建一个布尔测试,然后是一个 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']

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

谢谢,

约翰

【问题讨论】:

  • 如果孩子和父母都为空怎么办?
  • 代码的编写方式不可能两者都为空。此函数的前身是从 1 个 sql 查询中获取数据集,在 python 中进行分组,以相同的方式从不同的服务器获取第二个,然后加入多个列 - 只要有记录,要么整个记录将是完整的,或者每个数据集的一侧可能为空

标签: python pandas function if-statement boolean


【解决方案1】:

你可以使用np.select:

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

【讨论】:

    猜你喜欢
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 2017-01-09
    • 2023-03-21
    • 2020-11-21
    • 1970-01-01
    • 2013-11-22
    相关资源
    最近更新 更多