JuliaDataFrames从多列中过滤

我想根据来自不同列的多个值过滤 DataFrame。我写了下面的代码,但它给了我一个错误,ERROR: TypeError: non-boolean (BitArray{1}) used in boolean context.

df[((df.eruption .== "CC2011") && (df.dataset .== "MODIS.NDVI.CDI")), :]

在哪里eruptiondataset在数据帧列

任何想法我做错了什么?

回答

除了 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.

以上是JuliaDataFrames从多列中过滤的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>