【问题标题】:Flip a boolean based on another python dataframe?基于另一个python数据框翻转布尔值?
【发布时间】:2021-10-21 05:28:14
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你的意思是df["Original"]^df["Flipper"]

标签: python pandas xor


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    方法一:相乘不等于

    %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)
    

    【讨论】:

      猜你喜欢
      • 2017-04-01
      • 1970-01-01
      • 2019-09-17
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 2011-03-30
      相关资源
      最近更新 更多