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

Julia中如何从单列DataFrame中提取列名字符串和数据Vector?

Julia DataFrame单列单位与数据提取实现

函数f、g实现代码

using DataFrames

# 提取单位函数f
function f(df_sub::DataFrame)
    # 校验输入为单列DataFrame
    @assert ncol(df_sub) == 1 "仅允许输入单列DataFrame"
    # 获取目标列名
    col_name = names(df_sub)[1]
    # 正则匹配括号内的单位内容
    unit_match = match(r"\((.*?)\)", col_name)
    @assert !isnothing(unit_match) "列名未找到符合格式的单位标识"
    # 去除单位前后可能存在的空格后返回
    return strip(unit_match.captures[1])
end

# 提取数据向量函数g
function g(df_sub::DataFrame)
    @assert ncol(df_sub) == 1 "仅允许输入单列DataFrame"
    # 将单列数据转换为一维向量返回
    return vec(df_sub[:, 1])
end

测试效果验证

和你给出的示例逻辑完全适配:

df = DataFrame("x (in)" => 1:3, "y (°C)" => 4:6)
y = df[:, r"y "]

y_units = f(y)
# 返回结果:"°C"

y_data = g(y)
# 返回结果:3-element Vector{Int64}:
#  4
#  5
#  6

替代简化方案

如果不需要保留单列DataFrame的中间结果,可以在选列阶段直接拆分数据和单位,省去额外定义函数的步骤:

# 匹配目标列的索引
col_idx = findfirst(occursin(r"y "), names(df))
# 直接获取数据向量
y_data = df[!, col_idx]
# 直接提取单位
y_units = strip(match(r"\((.*?)\)", names(df)[col_idx]).captures[1])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:24:04