使用Julia中的列表对数据框架进行子集

时间:2018-12-14 15:31:41

标签: dataframe julia subset

我想知道是否可以根据其中一列的值(例如id)对一个数据框进行子集化,是否可以像df2一样使用equals运算符,但是,如果要基于像ids这样的列表,我找不到基于列表的数据集子集的运算符,因为.in运算符似乎不适用于数据帧,是否可以使用其他运算符?

  df = DataFrame(ids = [1, 1000, 10000, 100000,1,2,3,4], B = [1,2,3,4,123,6,2,7], D = ["N", "M", "I", "J","hi","CE", "M", "S"])
  df2= df[df[:pmid] .== 1000, :]
  ids = [2,3, 10000]
  df3= df[df[:pmid] .in ids,:]

截至目前,df3给了我一个边界错误。

我也在Julia 0.6.4上运行它

1 个答案:

答案 0 :(得分:2)

我想第一行ids=中的错字应该是pmid=,因为您稍后将使用该名称进行过滤。

对于df3,正确的语法应该是(我在1.0.2上尝试过):

df3= df[in.(df[:pmid], [ids]),:]

note在[]周围添加了ids,因为它应该是向量的向量。

我想将您指向DataFramesMeta.jl软件包,该软件包提供了更清晰的语法:

using DataFramesMeta
@where df (in.(:pmid, [ids]))

关于discourse.julialang.org的讨论也很有趣 关于按列表过滤的语法,包括性能提示。