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

如何在PySpark中提取字符串列的最后一个单词

解决PySpark提取字符串最后一个单词的问题

问题原因

你用F.split(...)[-1]的写法是Python列表的索引逻辑,但PySpark的split返回的是Spark数组类型,不支持负索引直接取值,所以才会全返回null。

正确实现方法

这里给你两种可行的写法:

方法1:使用element_at函数(推荐)

element_at是Spark专门用来取数组元素的函数,支持传入负索引表示从末尾取:

import pyspark.sql.functions as F

# 提取最后一个单词并去除首尾空格
Mydata = Mydata.withColumn('KeepLast', F.trim(F.element_at(F.split(F.col('MyColumn'), " "), -1)))

方法2:反转数组后取第一个元素

先反转split得到的数组,再取第一个元素,也能拿到最后一个单词:

import pyspark.sql.functions as F

Mydata = Mydata.withColumn('KeepLast', F.trim(F.first(F.reverse(F.split(F.col('MyColumn'), " ")), True)))

额外优化:处理连续空格

如果你的字符串里存在多个连续空格,用" "分割会生成空字符串元素,建议改用\\s+匹配任意数量的空白字符:

# 替换分割规则为匹配任意空白
F.split(F.col('MyColumn'), "\\s+")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:25:18