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

Julia中使用findfirst()匹配多条件查找索引的实现方法

解决方案

普通数组场景

你之前的写法存在两个核心问题:

  • 匿名函数语法错误,不能在单个判断逻辑中定义两个独立匿名函数
  • 条件判断误用了集合求并运算符\union,你需要的是同时满足两个条件,应该用逻辑与运算符&&

正确写法如下:

x = [10, 30, 50, 99, 299]
y = [3, 29, 30, 23, 55]
# 查找第一个符合条件的索引
idx = findfirst((xi, yi) -> xi > 80 && yi > 30, x, y)
# 输出结果为 5
println(idx)

如果需要获取所有符合条件的索引,把findfirst替换为findall即可。

DataFrame 列场景

假设你的DataFrame命名为df,对应列名分别为:x和:y,可以用两种方式实现:

方式1:行迭代写法(可读性更高)

using DataFrames

# 查找第一个符合条件的行索引
first_idx = findfirst(row -> row.x > 80 && row.y > 30, eachrow(df))
# 查找所有符合条件的行索引
all_idx = findall(row -> row.x > 80 && row.y > 30, eachrow(df))

方式2:广播写法(性能更高,适合大数据量)

# 查找第一个符合条件的行索引
first_idx = findfirst((df.x .> 80) .& (df.y .> 30))
# 查找所有符合条件的行索引
all_idx = findall((df.x .> 80) .& (df.y .> 30))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:15:01