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
相关产品推荐
相关产品推荐

