DataFrames.jl执行列转换失败:如何修正combine分组统计唯一值的调用
Julia DataFrames分组统计列唯一值数量的combine写法修正
错误原因
你原始写法的问题在于Julia的运算符优先级:匿名函数箭头->的优先级低于配对运算符=>,因此你写的:v => x -> length(unique(x)) => :len会被解析为:将「输入x,返回length(unique(x)) => :len这个Pair对象」的函数应用到:v列,所以最终得到的结果列都是1=>:len这类键值对,而非你需要的统计数值。
修正方案
方案1:给匿名函数添加括号明确边界
combine(gdf, :v => (x -> length(unique(x))) => :len)
方案2:使用函数组合语法(更简洁高效)
combine(gdf, :v => length∘unique => :len)
正确输出
两种写法都会得到预期的统计结果:
2×2 DataFrame Row │ id len │ String Int64 ─────┼─────────────── 1 │ a 1 2 │ b 2
内容的提问来源于stack exchange,提问作者Bogumił Kamiński
相关产品推荐
相关产品推荐

