Dataframe 使用findall()函数在具有多个条件的数据帧中搜索索引
茱莉亚1.3 如何在具有多种条件的数据框中搜索项目。下面是一个iris.csv数据集可下载的示例 假设我想选择萼片长度等于5.1的行的索引:Dataframe 使用findall()函数在具有多个条件的数据帧中搜索索引,dataframe,select,conditional-statements,julia,Dataframe,Select,Conditional Statements,Julia,茱莉亚1.3 如何在具有多种条件的数据框中搜索项目。下面是一个iris.csv数据集可下载的示例 假设我想选择萼片长度等于5.1的行的索引: findall(df[:,1] .== 5.1) 9-element Array{Int64,1}: 1 18 20 22 24 40 45 47 99 与选择具有刚毛的物种指数相同: findall(df[:,5] .== "setosa")[1:10] 10-element Array{Int64,1}:
findall(df[:,1] .== 5.1)
9-element Array{Int64,1}:
1
18
20
22
24
40
45
47
99
与选择具有刚毛的物种指数相同:
findall(df[:,5] .== "setosa")[1:10]
10-element Array{Int64,1}:
1
2
3
4
5
6
7
8
9
10
假设现在我想选择萼片长度等于5.1的行的索引,我尝试了与R中的函数类似的语法:
我应该使用哪一个命令?您需要广播&运算符,注意&,前面的括号和点
但是,请注意,df[:,1]。==5.1和df[:,5]。==setosa都分配临时数组。考虑使用FUNDALL的版本,它将函数作为第一个参数,如::
findall(x -> x.sepal.length == 5.1 && x.species == "setosa", eachrow(df))
findall(df[:,1] .== 5.1 & df[:,5] .== "setosa")
MethodError: no method matching &(::Float64, ::PooledArrays.PooledArray{String,UInt32,1,Array{UInt32,1}})
Closest candidates are:
&(::Any, ::Any, !Matched::Any, !Matched::Any...) at operators.jl:529
Stacktrace:
[1] top-level scope at In[149]:1
findall((df[:,1] .== 5.1) .& (df[:,5] .== "setosa"))
findall(x -> x.sepal.length == 5.1 && x.species == "setosa", eachrow(df))