- 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来选择相应的值进行替换。