python - Python IF OR -> Series 的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
问题描述
我有一个“PreHeat”列,我想创建一个新列“PreHeat_Outlier_TestX”,如果值是异常值(真,假),将在其中写入。
我可以用一种条件来管理它:
df['PreHeat_Outlier_TestX'] = (df['PreHeat'] > df['PreHeat'].quantile(0.75))
但是当我尝试使用 OR 或 ifelse 时,我得到了以下错误: ValueError: The truth value of a Series is ambiguous. 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
if (df['PreHeat'] > df['PreHeat'].quantile(0.75)):
df['PreHeat_Outlier_TestX'] = True
elif (df['PreHeat'] < df['PreHeat'].quantile(0.25)):
df['PreHeat_Outlier_TestX'] = True
else:
df['PreHeat_Outlier_TestX'] = False
if (df['PreHeat'] > df['PreHeat'].quantile(0.75)) or (df['PreHeat'] < df['PreHeat'].quantile(0.25)):
df['PreHeat_Outlier_TestX'] = True
else:
df['PreHeat_Outlier_TestX'] = False
我不确定,代码有什么问题。有人可以帮我吗?
解决方案
跟随 if 应该始终是一个布尔值True
or False
。您传递了一个不能转换为布尔值的系列。查看np.select
与 类似or
,也请参阅此问题
你想做什么
if (df['PreHeat'] > df['PreHeat'].quantile(0.75)):
df['PreHeat_Outlier_TestX'] = True
elif (df['PreHeat'] < df['PreHeat'].quantile(0.25)):
df['PreHeat_Outlier_TestX'] = True
else:
df['PreHeat_Outlier_TestX'] = False
应该做
df['PreHeat_Outlier_TestX'] = ~df['PreHeat'].between(df['PreHeat'].quantile(0.25), df['PreHeat'].quantile(0.75))
推荐阅读
- firebase - Flutter Firebase 在新请求时通知管理员
- bash - 如何提示问题,并在 sed 脚本中使用答案
- javascript - 创建一个新元素 div 并使用 JavaScript 将其包裹在现有元素周围
- sql - 将多个 CTE 与多个临时表一起使用
- powershell - PowerShell 不同服务以特定顺序运行(远程)
- c++ - 为 cppyy 使用 cmake 构建时链接标志出错
- sql-server - 无法在 SQL 中创建视图
- php - 如何在 html apdiv 中编写 php 变量?
- kotlin - 测试 enqueueUniqueWork 和 cancelUniqueWork WorkManager 的最佳方法
- google-apps-script - 数据洞察社区连接错误:列数不匹配