Julia中如何使用自定义字符串变量索引DataFrame列?
字符串变量索引Julia DataFrame列的实现方案
DataFrames.jl原生支持通过存储列名的变量完成列索引,不需要额外封装类似valueof的自定义方法,常用可行写法如下:
- 方括号索引(日常使用优先选这个写法)
直接把存储列名的字符串变量传入列索引位即可,和写死列名的访问效果完全一致:
如果你习惯用Symbol类型作为列标识,也可以先把字符串转为Symbol再传入,效果没有区别:str = "article_id" # 取整列数据,返回列的拷贝,修改返回结果不会改动原DataFrame col_copy = df[:, str] # 如果需要获取原列的引用(修改返回结果会同步改动原DataFrame的对应列),行索引用!即可 col_ref = df[!, str]col_ref = df[!, Symbol(str)] - 调用底层属性访问函数
平时写的df.article_id这类点号属性访问语法,底层是调用Julia内置的getproperty函数实现的,直接调用这个函数传入变量也能达到同样效果:# 效果和df.article_id完全相同,返回原列的引用 col_data = getproperty(df, Symbol(str))
避坑提示:不要用
eval(Meta.parse("df.$str"))这类拼表达式的元编程写法实现需求,不仅性能差,还存在代码注入风险,属于完全没必要的弯路。
内容的提问来源于stack exchange,提问作者Krish
相关产品推荐
相关产品推荐

