如何在Julia中使用Pipe.jl正确过滤DataFrame行并解决运行报错
Julia DataFrame配合Pipe.jl行过滤报错解决方案
报错原因
- 语法误用:DataFrames.jl的
filter函数要求第一个参数为作用于行的可调用函数,你使用的列名 => 判断条件是subset函数专属的传参格式,传入filter会触发Pair不可调用的MethodError - 逻辑错误:你需要过滤的是Gender列的Total值,代码中误写为Suicides列,即使语法修正也无法得到预期过滤结果
正确实现代码
方案1:使用filter单条件判断(直观易读)
using Pipe, DataFrames df3 = @pipe df3 |> filter(row -> row.Gender != "Total" && row.Year != "(2008-2012)", _)
如果要保留链式分步骤过滤的写法,可改为:
df3 = @pipe df3 |> filter(row -> row.Gender != "Total", _) |> filter(row -> row.Year != "(2008-2012)", _)
方案2:使用subset向量化操作(性能更优,适配你原有的语法思路)
df3 = @pipe df3 |> subset(:Gender => x -> x .!= "Total", :Year => x -> x .!= "(2008-2012)", _)
注意:subset的条件函数需要向量化,因此要使用广播运算符
.!=而非普通的!=
内容的提问来源于stack exchange,提问作者AVA
相关产品推荐
相关产品推荐

