Julia DataFrame:如何用|>将两行代码合并为一行?
问题解决方法
你的写法执行失败是因为replace(missing => false)会被优先执行,此时缺少第一个必要参数(要处理的目标数组),因此报错。下面提供几种可行的合并方式:
方式一:匿名函数配合管道
cond = df.A .> 0 |> x -> replace(x, missing => false)
管道会将df.A .> 0的运算结果传给匿名函数的参数x,再执行替换操作。
方式二:使用Julia占位符_(Julia 1.3+版本支持)
cond = df.A .> 0 |> replace(_, missing => false)
这里的_会自动替换为管道传来的前一步结果,等价于自动生成匿名函数。
方式三:用coalesce简化替换逻辑
df.A .> 0返回的是Union{Bool, Missing}类型的数组,coalesce可以直接将其中的missing替换为指定值,写法更简洁:
cond = coalesce.(df.A .> 0, false) # 也可以搭配管道使用 cond = df.A .> 0 |> x -> coalesce.(x, false)
直接嵌入索引(无需单独定义cond)
如果不需要保留cond变量,还可以直接把逻辑写在DataFrame的索引里:
df[coalesce.(df.A .> 0, false), :]
内容的提问来源于stack exchange,提问作者Spring
相关产品推荐
相关产品推荐

