根据另一个 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)
我在数据框中有两列“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)