Dataframe Julia数据帧上的多列选择

Dataframe Julia数据帧上的多列选择,dataframe,select,julia,Dataframe,Select,Julia,假设我有以下数据帧: 10行x 26列,命名为A到Z 我想做的是根据列的名称(而不是索引)生成列的多个子集。例如,假设我想要一个名为df2的新数据帧中的A到D列和P到Z列 我尝试过类似的方法,但似乎不起作用: df2=df[:,[:A,:D ; :P,:Z]] 语法:数组表达式中出现意外分号 切片时的顶级范围。jl:1 你知道怎么做吗? 谢谢你的帮助 df2 = select(df, Between(:A,:D), Between(:P,:Z)) 或 如果您确定您的列仅从:A到:Z,您还可以

假设我有以下数据帧:

10行x 26列,命名为A到Z

我想做的是根据列的名称(而不是索引)生成列的多个子集。例如,假设我想要一个名为df2的新数据帧中的A到D列和P到Z列

我尝试过类似的方法,但似乎不起作用:

df2=df[:,[:A,:D ; :P,:Z]]
语法:数组表达式中出现意外分号 切片时的顶级范围。jl:1

你知道怎么做吗? 谢谢你的帮助

df2 = select(df, Between(:A,:D), Between(:P,:Z))

如果您确定您的列仅从
:A
:Z
,您还可以编写:

df2 = select(df, Not(Between(:E, :O)))

最后,您可以使用
columnindex
函数轻松找到该列的索引,例如:

columnindex(df, :A)

然后使用列号-如果这是您喜欢的。

在Julia中,您还可以使用
Char
s构建
Range
s,因此当您的列仅以单个字母命名时,另一个选项是:

df[:, Symbol.(vcat('A':'D', 'P':'Z'))]

完美的你也可以只使用
['a':'D';'P':'Z']
,这与原始问题中的语法几乎相同。原始问题中的语法不起作用(如问题中的作者所述)。它必须是
d[:,Symbol.(['A':'d';'E':'F'])
(分号而不是
vcat
d[:,['A':'d';'E':'F']
throws
ERROR:ArgumentError:idxs[1]具有Char类型;按矢量编制索引时只允许使用整数、符号或字符串值
这就是我的意思。
columnindex(df, :A)
df[:, Symbol.(vcat('A':'D', 'P':'Z'))]