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

PySpark Dataframe:如何创建仅含前两个单词的新列

PySpark提取全名中的名和中间名

场景1:全名固定为「名+中间名+姓氏」三部分

如果确定full_name列的内容都是严格的三个部分(名、中间名、姓氏),可以直接取拆分后的前两个元素拼接:

写法1:直接获取前两个元素拼接

from pyspark.sql.functions import split, concat_ws, col

df = df.withColumn(
    'new_name',
    concat_ws(' ', split(col('full_name'), ' ').getItem(0), split(col('full_name'), ' ').getItem(1))
)

写法2:用slice函数更简洁

slice函数可以直接截取数组的前N个元素,再用concat_ws拼接成字符串:

from pyspark.sql.functions import split, concat_ws, slice

# slice参数:数组、起始索引(1-based)、截取长度
df = df.withColumn(
    'new_name',
    concat_ws(' ', slice(split(col('full_name'), ' '), 1, 2))
)

场景2:存在多个中间名(全名超过三部分)

如果有些全名包含多个中间名(比如「名+中间名1+中间名2+姓氏」),需要保留除最后一个元素(姓氏)之外的所有部分,用以下方法:

from pyspark.sql.functions import split, concat_ws, size, expr

# 先拆分全名得到数组,再截取除最后一个元素外的部分拼接
df = df.withColumn(
    'name_parts',
    split(col('full_name'), ' ')
).withColumn(
    'new_name',
    concat_ws(' ', expr('name_parts[0:size(name_parts)-1]'))
).drop('name_parts')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:10:29