我正在处理一个数据框,该数据框需要根据多个条件创建大量标志。我正在使用np.where
,但现在遇到了这个错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
出于可复制性和简便性,我只共享产生错误的代码部分以及所使用的列。 正在使用的数据框:
Data Uniques day_a1 day_a2 day_a3
0 1 1 3 NaN NaN
1 2 2 14 15.0 NaN
2 2 1 10 10.0 NaN
3 3 1 10 10.0 10.0
802 2 2 12 NaN 29.0
806 1 1 29 NaN NaN
产生错误的代码:
df['flag_3.3.3.1.1'] = np.where(
(
(df['Data'] == 3) &
(df['day_a1'] != 10) &
(df['Uniques'] == 3) & #I ran this separately and it was fine
(df['day_a1'] > 27 or df['day_a1'] < 4).any()),'flag',np.nan)
在.any()
之后传递or
之后,我似乎仍然有问题。
答案 0 :(得分:3)
尝试更换
(df['day_a1'] > 27 or df['day_a1'] < 4)
作者
((df['day_a1'] > 27) | (df['day_a1'] < 4))
请注意,|
的使用以及优先级的附加括号。