dataframe - 将 Julia 中的分组 DF 与 float 和字符串结合起来

标签 dataframe julia split-apply-combine dataframes.jl

我有一堆想要组合的分组数据帧gdf。我想将 GDF 与 var1 的平均值(Float)和 var2 的第一个元素(String)结合起来。

我试过了

combine(gdf, :var1 .=> mean, :var2 .=> first(:var2))

但是出现错误错误:MethodError:没有与 iterate(::Symbol) 匹配的方法 我还尝试了 first(:var2, 1)

感谢您的帮助。

最佳答案

这是使用 DataFrames.jl 执行此操作的方法:

julia> using DataFrames

julia> using Statistics

julia> df = DataFrame(id=[1,2,1,2,1,2], var1=1.5:1:6.5, var2=string.(1:6))
6×3 DataFrame
 Row │ id     var1     var2
     │ Int64  Float64  String
─────┼────────────────────────
   1 │     1      1.5  1
   2 │     2      2.5  2
   3 │     1      3.5  3
   4 │     2      4.5  4
   5 │     1      5.5  5
   6 │     2      6.5  6

julia> gdf = groupby(df, :id)
GroupedDataFrame with 2 groups based on key: id
First Group (3 rows): id = 1
 Row │ id     var1     var2
     │ Int64  Float64  String
─────┼────────────────────────
   1 │     1      1.5  1
   2 │     1      3.5  3
   3 │     1      5.5  5
⋮
Last Group (3 rows): id = 2
 Row │ id     var1     var2
     │ Int64  Float64  String
─────┼────────────────────────
   1 │     2      2.5  2
   2 │     2      4.5  4
   3 │     2      6.5  6

julia> combine(gdf, :var1 => mean, :var2 => first)
2×3 DataFrame
 Row │ id     var1_mean  var2_first
     │ Int64  Float64    String
─────┼──────────────────────────────
   1 │     1        3.5  1
   2 │     2        4.5  2

(=> 之前不需要 .,也不需要显式地将参数传递给 first)

如果您更喜欢使用赋值样式(而不是带有 => 对的函数式样式),请使用 DataFramesMeta.jl:

julia> using DataFramesMeta

julia> @combine(gdf, :var1_mean=mean(:var1), :var2_first=first(:var2))
2×3 DataFrame
 Row │ id     var1_mean  var2_first
     │ Int64  Float64    String
─────┼──────────────────────────────
   1 │     1        3.5  1
   2 │     2        4.5  2

关于dataframe - 将 Julia 中的分组 DF 与 float 和字符串结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72946707/

相关文章:

python - 使用 Python 对 DataFrame 中的 header 进行排序

arrays - 如何在 Julia 的矩阵中找到值的位置?

ruby - 通过 ruby​​ PTY 与 Julia 通信

R:有效计算值子集的摘要,其内容由两个变量之间的关系决定

python - 将日期分配给下面的所有行,直到下一个日期

r - 当 any(is.na(counts)) = FALSE 时,DESeq2 "NA values are not allowed"错误

module - 导出 Julia 中的所有符号

r - 使用dplyr的group_by进行split-apply-combine

python - Pandas 多索引数据框将列中的第一行设置为 0

r - R中不平衡面板上的简单移动平均线