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

如何在PySpark中按3字符长度拆分DataFrame列并拆分为多行?

PySpark按固定3字符拆分列并转为多行

要把DataFrame里的字符串列按每3个字符拆分并转成多行,你可以结合regexp_split(正则拆分)和explode(行展开)实现,具体操作如下:

1. 核心逻辑

普通split函数只能按指定分隔符拆分,没法直接按固定长度处理。这里用正则零宽断言(?<=.{3}),匹配每3个字符后的位置作为拆分点,把字符串拆成每3个字符一组的数组,再用explode把数组元素转成单独行。

2. 代码实现

先导入所需函数:

from pyspark.sql import SparkSession
from pyspark.sql.functions import regexp_split, explode

创建示例DataFrame:

spark = SparkSession.builder.appName("fixed_length_split").getOrCreate()

data = [(1, "ASD,GR D!G&HIK-HGD+TD")]
df = spark.createDataFrame(data, ["Id", "details"])
df.show(truncate=False)

执行拆分与行展开:

df_result = df.withColumn("split_col", regexp_split("details", "(?<=.{3})")) \
              .withColumn("details", explode("split_col")) \
              .drop("split_col")

df_result.show(truncate=False)

3. 输出结果

运行后会得到符合预期的结果:

+---+------+
|Id |details|
+---+------+
|1  |ASD   |
|1  |,GR   |
|1  | D!   |
|1  |G&H   |
|1  |IK-   |
|1  |HGD   |
|1  |+TD   |
+---+------+

如果字符串长度不是3的倍数,最后不足3个字符的部分会自动作为最后一组保留,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:52:08