如何修复Julia用OR语句筛选价格异常DataFrame子集时的报错?
错误原因
- 你使用的
||是Julia的短路逻辑或运算符,仅支持单个布尔值运算,不能直接作用于向量比较后返回的BitVector(布尔向量),所以触发TypeError: non-boolean (BitVector) used in boolean context报错。 - Julia不存在
.||逐元素运算符,逐元素逻辑或的正确语法是.|,且需要把两个比较表达式用括号包裹避免运算符优先级导致的语法错误。
修复方案
你可以选择两种写法中的任意一种:
方案1:修正逻辑或语法
function out_price_range(df) price_discrepancy = subset(df, :UnitPrice => X-> (X .< trough_share_price) .| (X .> peak_share_price), skipmissing=true) return price_discrepancy end
方案2:直接对正常价格条件取反(写法更简洁)
function out_price_range(df) price_discrepancy = subset(df, :UnitPrice => X-> .!(trough_share_price .<= X .<= peak_share_price), skipmissing=true) return price_discrepancy end
内容的提问来源于stack exchange,提问作者hmcgowan01
相关产品推荐
相关产品推荐

