Julia DataFrames 从多列中过滤

ima*_*tha 4 dataframe julia

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

df[((df.eruption .== "CC2011") && (df.dataset .== "MODIS.NDVI.CDI")), :]
Run Code Online (Sandbox Code Playgroud)

在哪里eruptiondataset在数据帧列

任何想法我做错了什么?

Bog*_*ski 6

除了 Sankios 的回答之外,还有以下选择:

filter(row -> row.eruption == "CC2011" && row.dataset == "MODIS.NDVI.CDI", df)
Run Code Online (Sandbox Code Playgroud)

和(更快但更详细):

filter([:eruption, :dataset] => (x, y) -> x == "CC2011" && y == "MODIS.NDVI.CDI", df)
Run Code Online (Sandbox Code Playgroud)

很快(在 DataFrames.jl 1.0 版本中)您将能够编写:

subset(df, :eruption => ByRow(==("CC2011")), :dataset => ByRow(==("MODIS.NDVI.CDI")))
Run Code Online (Sandbox Code Playgroud)


San*_*ios 5

您可以简单地将条件与&运算符连接起来,并将每个条件放在括号中()

df[ ( df.eruption .== "CC2011" ) .& ( df.dataset .== "MODIS.NDVI.CDI" ), :]
Run Code Online (Sandbox Code Playgroud)

  • 在“&”和“==”之前添加“.”,并且需要“,:”作为列选择器。 (2认同)