0
点赞
收藏
分享

微信扫一扫

• mask 逻辑判断中 不能用or 而是用 |

  • mask 逻辑判断中 不能用or 而是用 |

  • TypeError Traceback (most recent call last) Cell In[36], line 3 1 df = obj.df_投料[['数量', '入库重量']] 2 df['领料为零'] = df.数量.mask( ----> 3 any(df.数量.isna(), (df.数量.round(0) == 0)), 4 df.入库重量 5 ) TypeError: any() takes exactly one argument (2 given)
  •  这个报错是因为在使用any()函数时传入了两个参数,但是any()函数只接受一个参数。根据你的代码,我猜测你想要使用any()函数来检查df.数量.isna()(df.数量.round(0) == 0)两个条件是否有任意一个为真。

要解决这个问题,你可以使用逻辑运算符|来代替any()函数。修改代码如下:

df['领料为零'] = df.数量.mask(
    df.数量.isna() | (df.数量.round(0) == 0),
    df.入库重量
)

这样修改后,df.数量.isna() | (df.数量.round(0) == 0)会返回一个布尔值的Series,表示每个元素是否满足条件。然后,df.数量.mask()函数会根据这个布尔值的Series来选择相应的值进行替换。

举报

相关推荐

0 条评论