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

如何使用PySpark将行内键值对字符串拆分为多列?

PySpark实现指定数据转换的代码

问题描述

原始数据:

Column AColumn B
"A:1, B:2, C:3"XXX

期望转换结果:

Column AABCColumn B
"A:1, B:2, C:3"123XXX

实现代码

from pyspark.sql import SparkSession
from pyspark.sql.functions import regexp_extract

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

# 构造原始DataFrame
raw_data = [('"A:1, B:2, C:3"', 'XXX')]
df = spark.createDataFrame(raw_data, schema=["Column A", "Column B"])

# 提取A、B、C对应的值并生成新列,调整列顺序
transformed_df = df.withColumn("A", regexp_extract("Column A", r"A:(\d+)", 1)) \
                   .withColumn("B", regexp_extract("Column A", r"B:(\d+)", 1)) \
                   .withColumn("C", regexp_extract("Column A", r"C:(\d+)", 1)) \
                   .select("Column A", "A", "B", "C", "Column B")

# 查看转换结果
transformed_df.show(truncate=False)

代码说明

  • regexp_extract通过正则表达式匹配Column A里的键值对,精准捕获每个目标键(A/B/C)后的数字值,生成对应新列。
  • select方法用来调整列的排列顺序,确保最终输出结构与需求一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:25:16