Dataframe Julia数据帧上的多列选择
假设我有以下数据帧: 10行x 26列,命名为A到Z 我想做的是根据列的名称(而不是索引)生成列的多个子集。例如,假设我想要一个名为df2的新数据帧中的A到D列和P到Z列 我尝试过类似的方法,但似乎不起作用: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,您还可以
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']
throwsERROR:ArgumentError:idxs[1]具有Char类型;按矢量编制索引时只允许使用整数、符号或字符串值
这就是我的意思。
columnindex(df, :A)
df[:, Symbol.(vcat('A':'D', 'P':'Z'))]