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")))