JuliaDataFrames从多列中过滤
我想根据来自不同列的多个值过滤 DataFrame。我写了下面的代码,但它给了我一个错误,ERROR: TypeError: non-boolean (BitArray{1}) used in boolean context.
df[((df.eruption .== "CC2011") && (df.dataset .== "MODIS.NDVI.CDI")), :]
在哪里eruption和dataset在数据帧列
任何想法我做错了什么?
回答
除了 Sankios 的回答之外,还有以下选择:
filter(row -> row.eruption == "CC2011" && row.dataset == "MODIS.NDVI.CDI", df)
和(更快但更详细):
filter([:eruption, :dataset] => (x, y) -> x == "CC2011" && y == "MODIS.NDVI.CDI", df)
很快(在 DataFrames.jl 1.0 版本中)您将能够编写:
subset(df, :eruption => ByRow(==("CC2011")), :dataset => ByRow(==("MODIS.NDVI.CDI")))
回答
您可以简单地将条件与&运算符连接起来,并将每个条件放在括号中()。
df[ ( df.eruption .== "CC2011" ) .& ( df.dataset .== "MODIS.NDVI.CDI" ), :]
- add `.` before `&` and `==` and `, :` is needed as column selector.