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

PySpark按|和~拆分DataFrame列生成多列的实现需求

PySpark 拆分G_Codes列解决方案

针对你需要拆分PySpark DataFrame中G_Codes列的需求,这里提供一套可行的实现方案,适配子串数量不固定的场景:

核心思路

先把G_Codes按|拆分成数组,再将数组展开为单行单个子串的形式,最后把每个子串按~拆分为A、B、C三列。

完整代码实现

1. 创建示例DataFrame

先把你提供的示例数据转换成PySpark DataFrame:

from pyspark.sql import SparkSession
from pyspark.sql.functions import split, explode, col

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

# 示例数据
data = [
    ("020~Panel~RI|003~analysis, Complete~UR|004~Insert~RI|009~With Differential/Plate~HE|0850~Vitin , 25-Hydrogen~RI|2210~ Panel w/ Ratio~AC|3012~Comp.Panel (14)~AC|5270~globe A1c~AC",),
    ("0017~Acid~AC|001362~Kine,Total~AC|0053~A1c~AC|0072~analysis, Complete~UR|0459~TSH~RI|022~No Differential~HE|375~Panel~AC|3220~Comp. Panel (1)~AC",),
    ("0567~CM78+9AC~GN|303756~Panel~AC",),
    ("0009~ With Differential~HE|3756~Panel~AC|3220~Comp. Panel (1)~AC",),
    ("001974~Free, Direct~RI|004259~Lghj~RI",),
    ("0008~Panel~RI|003772~analysis, Complete~UR|0059~ With Differential~HE|102525~Estimation~AC|1285~Ratio,Shgc~AC|2350~Huik Ratio~GN|334~Copy18+eyR~AC",)
]

df = spark.createDataFrame(data, ["G_Codes"])
df.show(truncate=False)

2. 执行拆分操作

# 1. 按|拆分G_Codes为数组
df_array = df.withColumn("code_array", split(col("G_Codes"), "\\|"))

# 2. 展开数组为多行,每个子串单独一行
df_exploded = df_array.withColumn("code_item", explode(col("code_array"))).drop("G_Codes", "code_array")

# 3. 按~拆分每个子串为A、B、C三列
df_final = df_exploded.withColumn("A", split(col("code_item"), "~").getItem(0)) \
                     .withColumn("B", split(col("code_item"), "~").getItem(1)) \
                     .withColumn("C", split(col("code_item"), "~").getItem(2)) \
                     .drop("code_item")

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

结果说明

最终的DataFrame会将原G_Codes列中所有以|分隔的子串,分别拆分成A(编码)、B(描述)、C(标识)三列,每个子串对应一行数据,完美适配子串数量2-5个不等的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:11:18