根据另一个 python 数据框翻转布尔值?

Flip a boolean based on another python dataframe?

我在数据框中有两列“Original”和“Flipper”。我希望每当“Flipper”的值为 1 时,新列“Output”与“Original”相反,当它的值为 0 时,“Original”的值被放入“Output”

Original Flipper Output
0          0        0
0          1        1
1          0        1
1          1        0

这只是一个 XOR 门,但我不认为将它写成 XOR 门会很容易维护,我也不知道该怎么做。

这段代码要怎么写才能让“Original”和“Flipper”两列以可读的方式生成“Output”?

对于那个特定的问题,你可以这样做:

df['Output'] = 1 * (df['Original'] != df['Flipper'])

我找到了三种方法来完成这项任务:

方法一:相乘不等于

%timeit 1 * (df['Original'] != df['Flipper'])
340 µs ± 42.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

方法二:异或

%timeit df["Original"]^df["Flipper"]
160 µs ± 22.5 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

方法三:np.logical_xor

%timeit np.logical_xor(df["Original"],df["Flipper"])
360 µs ± 1.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)