如何创建一个基于比较两列panda的逐位异或的列



我正在尝试用另外两列的逐位XOR填充预制列

for index2, row in spec.iterrows():
registerName = spec.loc[index2, 'Register Name']
registerAddr = spec.loc[index2, 'CPU Address']
registerAddr = '0x' + registerAddr
settings1Val = output.loc[output['CPU Address'] == registerAddr, 'Settings 1 Values']
settings2Val = output.loc[output['CPU Address'] == registerAddr, 'Settings 2 Values']
fpgaAddr = spec.loc[index2, 'Address']
readWrite = spec.loc[index2, 'R/W']
output.loc[output['CPU Address'] == registerAddr, 'Register Name'] = registerName
output.loc[output['CPU Address'] == registerAddr, 'R/W'] = readWrite
output.loc[output['CPU Address'] == registerAddr, 'FPGA Address'] = fpgaAddr
output.loc[output['CPU Address'] == registerAddr, 'Delta (Pos. Difference)'] = settings1Val ^ settings2Val

对于最后一行,我有settings1Val和settings2Val,它们只是输入文件中特定索引处的int。最后一行工作正常(它以int形式返回逐位XOR(,但当我尝试时

bin(settings1Val ^ settings2Val)

它给了我一个错误:

TypeError: 'Series' object cannot be interpreted as an integer

有什么解决方案可以获得二进制形式的引用?

使用此:

(settings1Val ^ settings2Val).apply(bin)

或者,如果您想剥离领先的0b:

(settings1Val ^ settings2Val).apply(bin).str[2:]

或者,正如@JonClements所建议的,您也可以在没有领先的0b:的情况下使用它

(settings1Val ^ settings2Val).apply('{:b}'.format)

最新更新