【发布时间】:2019-09-19 15:50:09
【问题描述】:
我想在 pandas 数据框中创建一个新列,该列的计算结果为 True、False 或 NaN,具体取决于在同一数据框中的其他两列中找到的值,这两个列也仅包含 True、False 或 NaN 值。具体来说,如下图,新列中的行值应该是: (a) 如果任一参考列值为 True,则为 True, (b) 如果两个参考列值都是 False,或者它们是 False 和 NaN 的组合,则为 False,或者 (c) 如果两个参考列的值都是 NaN,则为 NaN。
col_A + col_B => new_col(期望值)
- 真 + 真 => 真
- 真 + 假 => 真
- 真 + NaN => 真
- 假 + 假 => 假
- 假 + NaN => 假
- NaN + NaN => NaN
最初,如下所示,我尝试将值分配给 col_A 或 col_B 为 True 的新列,但可以理解的是,只要一列或两列包含 NaN,它就会返回 False。
df[new_col] = df[col_A] | df[col_B]
我还想出了如何为 col_A 和 col_B 均为 NaN 的行创建一个返回 True 的列,但我仍在努力找出下一步。
df[new_col] = pd.isnull(df[col_A]) & pd.isnull(df[col_B])
我觉得我最终可以使用 for 循环/if 语句获得正确的输出,但我的理解是这将非常低效,而且似乎应该有一种更有效/更直接的方式来获得结果我'我正在寻找。
【问题讨论】:
标签: pandas