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

Scala中DataFrame列名组合筛选问题求助:startsWith+endsWith失效

解决Scala DataFrame列名组合条件过滤问题

你的代码失效主要是两个小问题导致的:Scala里的逻辑与运算符是&&而非AND,同时lambda表达式的写法需要把两个条件整合到同一个判断逻辑里。

正确的代码实现

val list_inactive_w = usg.columns.filter(colName => 
  colName.startsWith("max_consecut") && colName.endsWith("ays_data_w")
)

代码说明

  • 我们通过filter遍历DataFrame的所有列名,用colName指代每一个列名参数
  • 用Scala标准的逻辑与运算符&&同时校验两个条件:
    1. 列名以max_consecut开头(调用startsWith方法)
    2. 列名以ays_data_w结尾(调用endsWith方法)
  • 你也可以用更简洁的下划线语法(Scala会自动将两个_解析为同一个参数):
val list_inactive_w = usg.columns.filter(_.startsWith("max_consecut") && _.endsWith("ays_data_w"))

原代码失效的原因

  1. Scala中不存在AND关键字,逻辑与运算必须使用&&
  2. 原代码的括号写法错误,(_.endsWith("ays_data_w"))会被解析成独立的函数,无法和前面的条件组合,直接导致语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:00:06