合并两个TRUE / FALSE数据帧列,仅保留TRUE

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并两个TRUE / FALSE数据帧列,仅保留TRUE相关的知识,希望对你有一定的参考价值。

我在pandas数据框中有两列,如下所示:

df[1]   df[2]
TRUE    TRUE
FALSE   TRUE
TRUE    FALSE
FALSE   FALSE
TRUE    FALSE
FALSE   FALSE

从这两列中,我如何制作以下新列:

df[3]
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
答案

看起来你需要any功能,就像那样:

df['result_col'] = df.any(axis=1)
另一答案

您可以使用“或”(|)运算符。

例如:

df = pd.DataFrame({'a' : [True, False, True, False, True, False], 'b': [True, True, False, False, False, False]})

df['c'] = df.a | df.b

结果如下:

       a      b      c
0   True   True   True
1  False   True   True
2   True  False   True
3  False  False  False
4   True  False   True
5  False  False  False
另一答案

为了获得更好的性能,您可以使用底层的numpy数组并计算两列的np.logical_or

df.loc[:,'logical_or'] = np.logical_or(*df.values.T))

    col1   col2    logical_or
0   True   True        True
1  False   True        True
2   True  False        True
3  False  False       False
4   True  False        True
5  False  False       False

一些时间比较:

df = pd.DataFrame(np.random.randint(0,2,(10**6,2)).astype(bool))

%timeit np.logical_or(*df.values.T)
4.98 ms ± 33.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit df.any(axis=1)
50 ms ± 292 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

%timeit df[0] | df[1]
6.57 ms ± 154 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

以上是关于合并两个TRUE / FALSE数据帧列,仅保留TRUE的主要内容,如果未能解决你的问题,请参考以下文章

比较两个数据帧列并输出第三个

检查每个id和每行的数据帧列是否存在id

将两个数据帧与一些常见列合并,其中共同需要的组合是自定义函数

删除pandas数据帧列

Sass函数-comparable 判断两个数是否可进行加减合并

Power Query - 合并查询返回 true 或 false