如何使用PySpark将行内键值对字符串拆分为多列?
PySpark实现指定数据转换的代码
问题描述
原始数据:
| Column A | Column B |
|---|---|
| "A:1, B:2, C:3" | XXX |
期望转换结果:
| Column A | A | B | C | Column B |
|---|---|---|---|---|
| "A:1, B:2, C:3" | 1 | 2 | 3 | XXX |
实现代码
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
相关产品推荐
相关产品推荐

