【问题标题】:Getting error The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). when trying to create a new column [duplicate]得到错误 Series 的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。尝试创建新列时[重复]
【发布时间】:2021-12-12 21:28:15
【问题描述】:

我正在尝试将 float64 值转换为预测模型的二进制变量。有了它,如果价格 >= 152.00,我打算将其分配为 1,否则为 0。但我收到此错误: 得到错误 Series 的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

我很困惑,因为我读到的所有内容都说要修复问题,我应该使用按位运算符而不是 AND 和 OR。但我没有使用那些。有什么想法可以解决吗?

if df_full_train['price'] >= 152.00:
  df_full_train['above_average'] =1
else:
  df_full_train['above_average'] =0

【问题讨论】:

  • 您在 if 中使用系列,这与 OR/AND 一样“糟糕”。他们都期望一个简单的真/假。他们无法处理 Series 测试的多值 True/False。您显然想要进行某种迭代测试,为每一行做出选择,一次一个。

标签: python pandas numpy


【解决方案1】:

所以我最终这样做是为了得到我想要的。由于 152 是平均值,因此这种方法效果更好,并且如果将来平均值发生变化,也将继续有效。

mean=df_full_train['price'].mean()
df_full_train['above_average']=np.where(df_full_train['price']>=mean,1,0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 2018-03-28
    • 2021-08-12
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多