Dataframe Julia数据帧从多列中筛选

Dataframe Julia数据帧从多列中筛选,dataframe,julia,Dataframe,Julia,我想根据不同列中的多个值筛选数据帧。我写了下面的代码,但它给了我一个错误,error:TypeError:non-boolean(BitArray{1})用于boolean上下文 df[((df.eruption .== "CC2011") && (df.dataset .== "MODIS.NDVI.CDI")), :] 其中,和数据集是数据框中的列 你知道我做错了什么吗?你可以简单地用&操作符连接条件,并将每个条件放在括号中() df

我想根据不同列中的多个值筛选数据帧。我写了下面的代码,但它给了我一个错误,
error:TypeError:non-boolean(BitArray{1})用于boolean上下文

df[((df.eruption .== "CC2011") && (df.dataset .== "MODIS.NDVI.CDI")), :]
其中,
数据集
是数据框中的列


你知道我做错了什么吗?

你可以简单地用
&
操作符连接条件,并将每个条件放在括号中
()

df[(df.explanation.=“CC2011”)、(df.dataset.=“MODIS.NDVI.CDI”),:]

除了Sankios的答案外,还有以下几种选择:

filter(row -> row.eruption == "CC2011" && row.dataset == "MODIS.NDVI.CDI", df)
和(更快但更详细):

不久(在DataFrames.jl 1.0版本中),您将能够编写:

subset(df, :eruption => ByRow(==("CC2011")), :dataset => ByRow(==("MODIS.NDVI.CDI")))

&
=
之前添加
,:
作为列选择器是必需的。这也可以与
@view
结合使用,以提高计算效率(尽管根据您计划在之后对结果执行的操作,您可能仍然需要
复制()
subset(df, :eruption => ByRow(==("CC2011")), :dataset => ByRow(==("MODIS.NDVI.CDI")))