dataframe - Julia - dataframe - 如何在 by() 中使用字符串进行自定义输出列命名

标签 dataframe julia

我正在熟悉 Julia Dataframes 模块。 我还没有找到方法做的一件事是如何以编程方式分配 by() 操作结果的自定义列名称。

例如,我执行以下操作没有问题:

df = DataFrame(grp = rand(["a","b"], 100), x= rand(100), y = rand(100), z=rand(100))
by(df, :grp,result=(:x, :z)=>((x, y),) -> cov(x, y))

给出以下数据框

2×2 DataFrame
│ Row │ grp    │ result      │
│     │ String │ Float64     │
├─────┼────────┼─────────────┤
│ 1   │ b      │ -0.00622699 │
│ 2   │ a      │ -0.0303828  │

现在我希望结果的命名取决于代码的其他部分。所以我正在尝试这样做

resultColName="resultBis"
by(df, :grp,resultColName=(:x, :z)=>((x, y),) -> cov(x, y))

这给了我以下内容

2×2 DataFrame
│ Row │ grp    │ resultColName │
│     │ String │ Float64       │
├─────┼────────┼───────────────┤
│ 1   │ b      │ -0.00622699   │
│ 2   │ a      │ -0.0303828    │

这不起作用,因为我希望将结果列命名为“resultBis”。我理解为什么会发生这种情况,但是目前有没有办法提供一个字符串来选择结果列的自定义名称?

我想使用宏可能是处理这个问题的一种方法,我欢迎将其作为答案,但理想情况下我想直接在 DataFrames.jl 中执行此操作。欢迎任何帮助。谢谢

最佳答案

julia> by(df, :grp, (; Symbol(resultColName)=>(:x, :z)=>((x, y),) -> cov(x, y)))
2×2 DataFrame
│ Row │ grp    │ resultBis  │
│     │ String │ Float64    │
├─────┼────────┼────────────┤
│ 1   │ a      │ -0.0110717 │
│ 2   │ b      │ 0.0102181  │

说明:

by 接受 NamedTuple 作为第三个参数。 为了以编程方式创建它,我们使用 (; :key => value) 运算符。有关更多信息,请在 Julia 控制台中输入 ?NamedTuple

关于dataframe - Julia - dataframe - 如何在 by() 中使用字符串进行自定义输出列命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60229490/

相关文章:

python - 第一个 pandas DataFrame 列索引大于 x

windows - 在 Julia 中更改包目录的路径(在 Windows 上)

dataframe - 是否可以将选定的列设置为 julia 数据框中的索引?

string - 如何在Julia中使字符串的大写字母变为特定字母?

types - Julia : ceil/floor 可以返回一个整数吗?

julia - 在 3D 数组的中间维度上广播

r - 使用R//redux向redis传输数据

python - 获取数据帧中最后一个值时出现 KeyError

python - 在多索引 DataFrame 中添加和重命名列

r - 使用列名创建两列数据框