首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >朱莉娅:如何在DataFrames.jl中创建一个函数的多列

朱莉娅:如何在DataFrames.jl中创建一个函数的多列
EN

Stack Overflow用户
提问于 2020-09-04 03:07:47
回答 1查看 469关注 0票数 1

假设我有一个专栏

代码语言:javascript
复制
using DataFrames

df = DataFrame(var = "methodA_mean")
代码语言:javascript
复制
1×3 DataFrame
│ Row │ var          │
│     │ String       │
├─────┼──────────────┼
│ 1   │ methodA_mean │
│ 2   │ methodB_var  │
│ 3   │ methodA_var  │

我想通过提取A和平均值创建两个新列,如下所示

代码语言:javascript
复制
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    │

我可以从var列中写出正则表达式"A“或"B”和"mean“和"var”。但是我是如何优雅地输出到多列中的呢?

我尝试了下面的方法,它可以工作,但我觉得应该有更优雅的方式来创建多列

代码语言:javascript
复制
tmp = match.(r"method(?<ab>A|B)_(?<stat>mean|var)", df.var)

df.ab = getindex.(tmp, :ab)
df.stat = getindex.(tmp, :st)
代码语言:javascript
复制
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      │
EN

回答 1

Stack Overflow用户

发布于 2020-09-04 05:45:28

我不知道您的代码在哪一部分需要改进,因为在我看来,这是正常的,也是可以的,但是您可以这样写:

代码语言:javascript
复制
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      │
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63734251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档