Dataframe 使用Julia中的列表对数据帧进行子集设置
我想知道是否可以根据其中一列(如ID)的值对下面这样的数据帧进行子集,但是可以使用df2中的equals运算符,如果您想基于列表(如ID)进行子集,我找不到一个操作符来根据列表对数据帧进行子集,因为in操作符似乎无法处理数据帧。我可以使用其他操作符吗Dataframe 使用Julia中的列表对数据帧进行子集设置,dataframe,julia,subset,Dataframe,Julia,Subset,我想知道是否可以根据其中一列(如ID)的值对下面这样的数据帧进行子集,但是可以使用df2中的equals运算符,如果您想基于列表(如ID)进行子集,我找不到一个操作符来根据列表对数据帧进行子集,因为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
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上运行这个程序,我想你的第一行
ids=
应该是pmid=
,因为你以后会使用这个名字进行过滤
对于df3,正确的语法应该是(我在1.0.2上试过):
注:在ids
周围添加了[]
,因为这应该是向量的向量
我想向您介绍DataFramesMeta.jl包,它提供了更清晰的语法:
using DataFramesMeta
@where df (in.(:pmid, [ids]))
关于这个问题也进行了相当有趣的讨论
关于按列表筛选的语法,包括性能提示
using DataFramesMeta
@where df (in.(:pmid, [ids]))