& 不支持的操作数类型:"str"和"str","发生在索引 0 处"



我试图在数据帧中创建一个新列,但在运行下面的代码后收到错误消息。

不支持&:'的操作数类型str’和str’",'出现在索引"0"处。

def calc(row):
if row['A'] == '1' & row['B'] == '2' :
return 'R'
else :
return row['C']

df["C"] = df.apply(calc, axis=1)

我的代码有什么问题吗?非常感谢。

总之,不能对字符串使用&,因为它对两个语句的结果执行逐位AND运算。如果要检查这两个语句在逻辑上是否为True,请使用and

如果你想了解更多关于&and之间的区别,请查看这篇由geeksfoekers 撰写的文章

这里有两件事。。。

您可以使用位和运算符通过对代码进行如下轻微更改来实现所需的结果:

if (row['A'] == '1') & (row['B'] == '2') :

这是由于操作员的优先级。在您的原始代码中,由于优先级规则,要尝试的第一个操作是:

'1' & row['B']

正如你现在所知,这是非法的。这是因为按位和(和(的阶数高于比较运算符。

运算符在优先级顺序中的位置较低。

通常会写:

if row['A'] == '1' and row['B'] == '2' :

由于操作员优先,括号是不必要的

相关内容

最新更新