julia - Julia:如何在 DataFrames.jl 中使用一个函数创建多列
问题描述
说我有一个专栏
using DataFrames
df = DataFrame(var = "methodA_mean")
1×3 DataFrame
│ Row │ var │
│ │ String │
├─────┼──────────────┼
│ 1 │ methodA_mean │
│ 2 │ methodB_var │
│ 3 │ methodA_var │
我想通过提取 A 和 mean var 来创建两个新列
3×3 DataFrame
│ Row │ var │ ab │ stat │
│ │ String │ String │ String │
├─────┼──────────────┼────────┼────────┤
│ 1 │ methodA_mean │ A │ mean │
│ 2 │ methodB_var │ B │ var │
│ 3 │ methodA_var │ A │ var │
我可以从列中编写一个正则表达式提取“A”或“B”以及“mean”和“var” var
。但是我如何优雅地输出到多列?
我尝试了以下方法并且它有效,但我觉得应该有更优雅的方式来创建多个列
tmp = match.(r"method(?<ab>A|B)_(?<stat>mean|var)", df.var)
df.ab = getindex.(tmp, :ab)
df.stat = getindex.(tmp, :st)
3×3 DataFrame
│ Row │ var │ ab │ stat │
│ │ String │ SubStri… │ SubStri… │
├─────┼──────────────┼──────────┼──────────┤
│ 1 │ methodA_mean │ A │ mean │
│ 2 │ methodB_var │ B │ var │
│ 3 │ methodA_var │ A │ var │
解决方案
我不确定您在代码的哪个部分寻找改进,因为这对我来说似乎很正常并且可以,但是您可以这样写:
julia> insertcols!(df, :ab => last.(first.(df.var, 7), 1), :stat => chop.(df.var, head=8, tail=0))
3×3 DataFrame
│ Row │ var │ ab │ stat │
│ │ String │ String │ SubStri… │
├─────┼──────────────┼────────┼──────────┤
│ 1 │ methodA_mean │ A │ mean │
│ 2 │ methodB_var │ B │ var │
│ 3 │ methodA_var │ A │ var │
推荐阅读
- python - 如何使用 python 控制台修复导入 keras 错误
- c# - 如何在winform中的file.cs之间传输数据?
- hyperledger-fabric - Hyperledger Fabric 中是否有与 getHistoryForKey 类似的功能,也提供交易详情?
- android - android 不适用于 bg_non_interactive?
- c++ - 获取向量中元素的地址
- reactjs - 在 ReactJS onClick() 中导航到不同的视图/屏幕
- android - 打算打开 Twitch 用户个人资料
- javascript - 模块“AppModule”导入的意外值“FormBuilder”。请添加@NgModule 注释
- java-native-interface - art::JNI::NewStringUTF() 中的崩溃
- gatsby - 将 gatsby-plugin-transition-link 放入 gatsby.config 文件会导致整个网站崩溃