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

PySpark需求:对比不同列子串生成Required_column布尔值

PySpark 实现 Required_column 生成方案

核心思路

  1. 提取column_1中开关值的前4个字符作为匹配基准
  2. 对column_2做以下处理:
    • 按逗号分割成独立开关值列表
    • 去除每个开关值前后的多余空格(适配空格数量不固定的情况)
    • 提取每个开关值的前4个字符
    • 检查列表中是否存在与基准匹配的字符,返回对应布尔值

实现代码

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, substring, split, transform, trim, exists

# 初始化SparkSession
spark = SparkSession.builder.appName("SwitchPrefixMatch").getOrCreate()

# 构造示例DataFrame
sample_data = [
    ("K12B-45-84-6", "K12B-02-36-504, I05O-21-65-312, A301-21-25-363", True),
    ("J020-35-2-9", "P12K-05-31-602, M002-22-22-636,L630-51-32-544", False),
    ("L006-85-00-694", "M10P-22-94-349,L006-85-00-694, I553-35-12-240", True),
    ("M002-22-36-989", "U985-12-45-363,    M002-19-14-964", True)
]
df = spark.createDataFrame(sample_data, ["column_1", "column_2", "Expected_Required_column"])

# 生成目标列Required_column
result_df = df.withColumn(
    "Required_column",
    exists(
        transform(
            split(col("column_2"), ","),
            lambda val: substring(trim(val), 1, 4)
        ),
        lambda prefix: prefix == substring(col("column_1"), 1, 4)
    )
)

# 查看结果
result_df.show(truncate=False)

代码细节说明

  • split(col("column_2"), ","):将column_2按逗号分割为开关值列表,自动适配不同数量的分隔空格
  • trim(val):清除每个开关值前后的冗余空格,解决空格不固定的问题
  • substring(..., 1, 4):提取开关值的前4个字符作为匹配依据
  • exists(..., lambda x: x == ...):遍历处理后的前缀列表,判断是否存在与column_1前缀匹配的元素,存在则返回True,否则返回False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:50:44