You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas中用XOR运算符比较两个二进制字符串列并输出到新列

实现方案

你不需要提前把数值转成二进制字符串再做XOR运算,pandas支持直接对整数列执行逐元素位异或操作,比循环写法效率高很多,两种可行实现如下:

方案1:向量化运算(推荐,性能最优)

一行代码即可完成整列的异或计算:

# 直接对两列整数值执行逐元素XOR运算,结果为十进制整数
output["Delta (Pos. Difference)"] = output["Settings 1 Values"].astype(int) ^ output["Settings 2 Values"].astype(int)

如果需要把结果存储为二进制字符串格式,可以在运算后追加格式转换:

# 异或运算后转二进制字符串格式存储
output["Delta (Pos. Difference)"] = (output["Settings 1 Values"].astype(int) ^ output["Settings 2 Values"].astype(int)).apply(lambda x: format(x, 'b'))

方案2:修正现有循环的写法

你原有代码里的语法错误是output.loc(index, "Settings 2 Values")用了圆括号,loc取值应该用方括号,修正后即可正常运行:

for index, row in output.iterrows():
    output.loc[index, 'CPU Address'] = hex(CPU_START_ADDR + (2 * index))[2:]
    # 直接用行数据的整数值做异或,不需要提前转二进制字符串
    settingXor = int(row["Settings 1 Values"]) ^ int(row["Settings 2 Values"])
    output.loc[index, "Delta (Pos. Difference)"] = settingXor

注意事项

  • 运算前需要确认Settings 1 Values和Settings 2 Values两列没有空值、非数字等无法转为整数的异常内容
  • 数据量较大时优先选择向量化运算方案,iterrows循环的执行效率会低很多

内容的提问来源于stack exchange,提问作者parzival

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:06:08