在尝试了许多不同的组合并进行研究之后,我想出了这个解决方案,但我仍然遇到 ValueError。我需要根据基于 2 个结果高于或低于阈值的列比较评估来进行“1”或“0”分配。例如,假设我的数据是这样的:
df:
avg var1
0 30 60
1 40 50
2 45 20
3 50 10
4 50 74
df_final 需要看起来像这样:
avg var1 condition
0 30 60 1
1 40 50 1
2 45 20 0
3 50 10 0
4 50 74 1
我已经尝试过使用“|”对于“或”运算符,我也尝试在以下条件下使用 np.where 并得到答案,但答案不正确。
df['condition'] = df[(df.var1 > df.avg == 1) | (df.var1 < df.avg == 0)]
但是得到 ValueError.
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
谢谢。我想我很接近,但只差一点点。
只需将布尔掩码(评估条件的)转换为整数类型:
df['condition'] = (df.var1 > df.avg).astype(int)
avg var1 condition
0 30 60 1
1 40 50 1
2 45 20 0
3 50 10 0
4 50 74 1