【问题标题】:Evaluating Two Conditions in Pandas Dataframe with Separate Assignments使用单独的分配评估 Pandas Dataframe 中的两个条件
【发布时间】:2023-02-24 02:28:25
【问题描述】:

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

    只需将布尔掩码转换为整数类型:

    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
    

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2023-02-07
      • 1970-01-01
      相关资源
      最近更新 更多