使用单独分配评估 Pandas Dataframe 中的两个条件

问题描述 投票:0回答:1

在尝试了许多不同的组合并进行研究之后,我想出了这个解决方案,但我仍然遇到 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().

谢谢。我想我很接近,但只差一点点。

pandas conditional-statements calculated-columns
1个回答
1
投票

只需将布尔掩码(评估条件的)转换为整数类型:

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
© www.soinside.com 2019 - 2024. All rights reserved.