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

PySpark是否有替代SQL LIKE的函数?及DataFrame列批量处理需求

PySpark替代LIKE的函数及列名处理方案

一、替代SQL LIKE的PySpark函数

PySpark提供了多个函数实现类似SQL LIKE的匹配逻辑,常用的有以下几种:

  • like() 方法:和SQL LIKE语法完全兼容,支持%(匹配任意长度字符)和_(匹配单个字符)通配符。
    示例:

    from pyspark.sql.functions import col
    
    # 匹配col_name中包含"abc"的行
    filtered_df = df.filter(col("col_name").like("%abc%"))
    # 匹配col_name以"abc"开头的行
    filtered_df = df.filter(col("col_name").like("abc%"))
    
  • rlike() 方法:基于正则表达式实现匹配,功能比like()更灵活,适合复杂规则的匹配场景。
    示例:

    # 匹配col_name中包含任意数字的行
    filtered_df = df.filter(col("col_name").rlike("\\d"))
    
  • contains()、startswith()、endswith():语义更直观的方法,分别对应包含、开头、结尾的匹配需求。
    示例:

    # 匹配col_name包含"abc"的行
    filtered_df = df.filter(col("col_name").contains("abc"))
    # 匹配col_name以"abc"开头的行
    filtered_df = df.filter(col("col_name").startswith("abc"))
    # 匹配col_name以"abc"结尾的行
    filtered_df = df.filter(col("col_name").endswith("abc"))
    

二、DataFrame列名处理方案

针对你给出的列名列表,要删除__i:nil结尾的列,并将__VALUE结尾的列重命名为前缀,可通过以下代码实现:

from pyspark.sql.functions import col

# 你的列名列表
cols = ['Timestamp',
        'ScheduleCode__VALUE',
        'ScheduleCode__i:nil',
        'ProductionCode__VALUE',
        'ProductionCode__i:nil',
        'ProductCode__VALUE',
        'ProductCode__i:nil',
        'ProductCategory__VALUE',
        'ProductCategory__i:nil']

# 构造处理后的列表达式
processed_columns = []
for col_name in cols:
    # 跳过__i:nil结尾的列
    if col_name.endswith('__i:nil'):
        continue
    # 重命名__VALUE结尾的列
    elif col_name.endswith('__VALUE'):
        new_col_name = col_name.split('__VALUE')[0]
        processed_columns.append(col(col_name).alias(new_col_name))
    # 其他列保留原名
    else:
        processed_columns.append(col(col_name))

# 将处理后的列应用到DataFrame
df = df.select(processed_columns)

执行后,DataFrame会保留Timestamp、ScheduleCode、ProductionCode、ProductCode、ProductCategory这些列,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:46:02