朱莉娅:如何将(:col1,:col2)`之间的'Between'转换为DataFrames.DataFrame的列索引?

朱莉娅:如何将(:col1,:col2)`之间的'Between'转换为DataFrames.DataFrame的列索引?,dataframe,julia,Dataframe,Julia,考虑 using DataFrames df=DataFrame(a=1:3, b=1:3, c=1:3) 假设我想把(:b,:c)之间的转换成列索引,它应该返回[2,3] 我可以选择那些列提取名称,然后调用columnindex,但这不是很优雅。使用: names(df, Between(:b, :c)) 要获取选定的列名和名称,请执行以下操作: columnindex.(Ref(df), names(df, Between(:b, :c))) 或者(更长但更容易阅读) 获取列号 如果您

考虑

using DataFrames
df=DataFrame(a=1:3, b=1:3, c=1:3)
假设我想把(:b,:c)之间的
转换成列索引,它应该返回
[2,3]

我可以
选择那些列
提取名称,然后调用
columnindex
,但这不是很优雅。

使用:

names(df, Between(:b, :c))
要获取选定的列名和名称,请执行以下操作:

columnindex.(Ref(df), names(df, Between(:b, :c)))
或者(更长但更容易阅读)

获取列号

如果您想要更快的内部产品(即不保证长期有效且未记录;但不太可能更改-因此使用相对安全):

DataFrames.index
上使用
getindex
与使用
columnindex
之间的一个小区别是:

  • columnindex
    将为不存在的列返回
    0
    (而
    getindex
    DataFrames.index
    错误时)
  • 您不能将整数传递给
    columnindex
    ,而可以将其传递给
    DataFrames.index上的
    getindex

  • 列索引(df,介于(:b,:c)之间)的PR有意义吗<代码>列索引
    列索引
    作为别名,我将在其中进行注释。
    [columnindex(df, n) for n in names(df, Between(:b, :c))]
    
    DataFrames.index(df)[Between(:b, :c)]