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

Swift Dataframe分组后计算均值、最值并追加列的实现方法

在Swift TabularData中按站点分组并计算多统计量(均值、最小、最大值)

要同时得到分组后的均值、最小值和最大值,你可以分别计算这三个统计量的DataFrame,再通过公共列Station合并到一起。以下是完整实现代码:

import Foundation
import TabularData

let station_names=["S1","S2","S3","S4","S5"]

var stations:[String] = []
var values:[Double] = []

for _ in 1 ... 100 {
  stations.append(station_names.randomElement()!)
  values.append(Double.random(in: 1.0 ... 25.0))
}

let df: DataFrame = ["Station": stations, "Values": values]

// 按站点名称分组
let grouped_df = df.grouped(by: "Station")

// 分别计算均值、最小值、最大值,并修改列名便于区分
let meanDF = grouped_df.means("Values", Double.self).rename(column: "Values_mean", to: "Mean")
let minDF = grouped_df.mins("Values", Double.self).rename(column: "Values_min", to: "Min")
let maxDF = grouped_df.maxs("Values", Double.self).rename(column: "Values_max", to: "Max")

// 合并三个统计结果DataFrame,以Station为连接键
let finalDF = meanDF
    .joined(with: minDF, on: "Station")
    .joined(with: maxDF, on: "Station")
    .sorted(on: "Station")

print(finalDF)

关键步骤说明:

  • 分组:用grouped(by:)方法按Station列完成分组,得到GroupedDataFrame对象
  • 计算统计量:分别调用means、mins、maxs方法获取对应统计结果,用rename修改列名避免混淆
  • 合并结果:通过joined(with:on:)方法,以Station作为公共键,将三个统计结果DataFrame合并成一个包含所有所需列的DataFrame
  • 排序:最后用sorted(on:)按站点名称排序,让结果更易读

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:16:10