julia - 列名作为 DataFramesMeta 宏中的变量
问题描述
我正在使用来自DataFramesMeta.jl的宏,并且我希望将列名存储在变量中。这是我的输入数据:
using DataFrames
using DataFramesMeta
using Statistics
df = DataFrame(g = ["a", "a", "b", "b"], x = 1:4)
gdf = groupby(df, :g)
colname = :x
如果我使用colname
in @select
,它有点工作,除了它返回一个数组而不是数据框:
julia> @select(df, :x)
4×1 DataFrame
│ Row │ x │
│ │ Int64 │
├─────┼───────┤
│ 1 │ 1 │
│ 2 │ 2 │
│ 3 │ 3 │
│ 4 │ 4 │
julia> @select(df, colname)
4-element Array{Int64,1}:
1
2
3
4
如果我尝试使用colname
in @where
or @group_by
,它们会抛出方法错误:
julia> @where(df, :x .> 2)
2×2 DataFrame
│ Row │ g │ x │
│ │ String │ Int64 │
├─────┼────────┼───────┤
│ 1 │ b │ 3 │
│ 2 │ b │ 4 │
julia> @where(df, colname .> 2)
ERROR: MethodError: no method matching isless(::Int64, ::Symbol)
julia> @based_on(gdf, xavg = mean(:x))
2×2 DataFrame
│ Row │ g │ xavg │
│ │ String │ Float64 │
├─────┼────────┼─────────┤
│ 1 │ a │ 1.5 │
│ 2 │ b │ 3.5 │
julia> @based_on(gdf, xavg = mean(colname))
ERROR: MethodError: no method matching iterate(::Symbol)
有没有办法在DataFramesMeta.jl宏中将列名作为变量传递?
解决方案
推荐阅读
- php - 确定在控制器中选择了哪个 RadioType 表单
- android - [Ionic]从 Firebase 存储中检索图像的最佳方式是什么?
- jquery - 使用两个类切换导航
- c - C 指针:来自不兼容指针类型的赋值
- asp.net-mvc - Icollection 不包含任何
- spring-boot - 来自 Tomcat 的 Spring Boot 配置文件位置
- c++ - 'operator[]' 的多个重载实例化为相同的签名
- linux - Jenkins 无法执行现有的二进制文件
- javascript - 如何关闭 as.net 中的 2 个页面并刷新网格
- node.js - 无法在 Azure 上使用 Knex 迁移生产数据库