You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Julia DataFrames中使用OR条件筛选指定列值为1的行?

在Julia DataFrames中实现多条件行筛选(AND/OR)

解决OR条件筛选问题

你当前代码中subset的多个参数默认是AND逻辑,所以只会保留两列都为1的行。要实现OR逻辑,只需将两列的判断整合到同一个ByRow函数中,用||表示“或”:

pci_or_cabg = @chain df begin
    select([:During_Cabg, :During_Pci] .=> ByRow(x -> coalesce(x, 0)); renamecols=false)
    subset([:During_Cabg, :During_Pci] => ByRow((cabg, pci) -> cabg == 1 || pci == 1))
end

另一种写法:使用filter函数

如果你觉得subset的写法不够直观,也可以用filter函数直接遍历每一行判断:

pci_or_cabg = @chain df begin
    select([:During_Cabg, :During_Pci] .=> ByRow(x -> coalesce(x, 0)); renamecols=false)
    filter(row -> row.During_Cabg == 1 || row.During_Pci == 1, _)
end

补充:AND条件的正确写法

如果需要保留两列都为1的行(即原代码的初始逻辑),除了你原来的写法,也可以用整合式的写法,用&&表示“与”:

# AND条件示例
subset([:During_Cabg, :During_Pci] => ByRow((cabg, pci) -> cabg == 1 && pci == 1))

关键说明

  • subset的多个独立条件参数(如subset(col1 => cond1, col2 => cond2))默认是AND关系,所有条件必须同时满足。
  • 要实现OR或自定义复合逻辑,需将多列传入同一个ByRow函数,在函数内部用||/&&组合判断逻辑。

内容的提问来源于stack exchange,提问作者psych0groov3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:11:03