You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataFramesMeta能否实现多列批量转换与汇总?

用DataFramesMeta实现多列分组批量统计(均值+求和)

当然可以用DataFramesMeta复现你给出的DataFrames批量操作效果,以下是几种等效写法:

首先确保导入所需包:

using DataFrames, DataFramesMeta, Statistics

创建测试DataFrame的代码和你提供的一致:

df = DataFrame(
    a=string.("cat", rand(1:3, 100)),
    x=rand(1:100, 100),
    y=rand(2:10:100, 100),
    z=rand(0.5:0.1:2, 100)
)

写法1:逐列显式定义统计项(直观易读)

用@by宏直接按:a分组,然后为每列定义均值和求和项:

@by df :a begin
    :x_mean = mean(:x)
    :x_sum = sum(:x)
    :y_mean = mean(:y)
    :y_sum = sum(:y)
    :z_mean = mean(:z)
    :z_sum = sum(:z)
end

写法2:批量处理多列+多函数(更简洁)

这种写法和你原DataFrames代码的逻辑最贴近,通过cols()批量指定目标列,同时绑定多个统计函数:

@combine(groupby(df, :a), 
    cols([:x, :y, :z]) .=> [mean, sum] .=> [:mean, :sum]
)

写法3:先分组再合并(分步清晰)

先通过@groupby生成分组对象,再用@combine批量计算:

gdf = @groupby df :a
@combine gdf cols([:x, :y, :z]) .=> [mean, sum] .=> [:mean, :sum]

以上三种写法的输出结果和你原代码combine(groupby(df,:a), [:x,:y,:z].=>[mean sum])完全一致,都会生成包含a列,以及x_mean、x_sum、y_mean、y_sum、z_mean、z_sum的结果DataFrame。

内容的提问来源于stack exchange,提问作者Eliezer Otero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:05:12