如何在julia中仅选择dataframe列的子集

问题描述 投票:6回答:3

我有几列的数据帧,如column1,column2 ... column100。如何仅选择列的子集(例如,不是column1)应返回列column2 ... column100的所有列。

data[[colnames(data) .!= "column1"]])

似乎不起作用。

我不想改变数据帧。我只想选择所有没有特定列名的列,如我的示例所示

julia
3个回答
7
投票

正如@Reza Afzalan所说,你要做的是返回一个字符串数组,而DataFrames中的列名是符号。

鉴于朱莉娅没有条件列表理解,我猜你能做的最好的事情就是

data[:, filter(x -> x != :column1, names(df))]

这将为您提供删除了第1列的数据集(不会改变它)。您可以将其扩展为检查名称列表:

data[:, filter(x -> !(x in [:column1,:column2]), names(df))]

2
投票

colnames(data) .!= "column1"#=>返回一个bool数组

我认为正确的方法是使用返回所需列名称的过滤器函数

filter(x->x != "column1", colnames(data))#=>返回一个字符串数组

DataFrame列名称是Symbol数据类型

map(symbol ,str_array_of_filterd_column_names)#=>返回相同符号的数组


0
投票

一种方法是使用索引选择一系列列

idx = length(data) data[2:idx]

其他进行条件选择的方法是在DataFrames docs

© www.soinside.com 2019 - 2024. All rights reserved.