使用PySpark从字符串中获取倒数第二个单词

约翰·杜

我需要从字符串值中获取倒数第二个单词。

df = spark.createDataFrame([
  ["sample text 1 AFTEDGH XX"],
  ["sample text 2 GDHDH ZZ"],
  ["sample text 3 JEYHEHH YY"],
  ["sample text 4 QPRYRT EB"],
  ["sample text 5 KENBFBF XX"]
]).toDF("line")

+--------+
|word    |
+--------+
|AFTEDGH |
|GDHDH   |
|JEYHEHH |
|QPRYRT  |
|KENBFBF |
+--------+

我试过了:

df_new = df.withColumn('word', F.split(F.col('line'), ' ')[-2])

df_new = df.withColumn('word', F.reverse(F.split(F.col('line'), ' '))[-2])

但是他们返回空

麦克

要使用负索引,可以使用element_at

import pyspark.sql.functions as F

df2 = df.withColumn('word', F.element_at(F.split(F.col('line'), ' '), -2))

df2.show(truncate=False)
+------------------------+-------+
|line                    |word   |
+------------------------+-------+
|sample text 1 AFTEDGH XX|AFTEDGH|
|sample text 2 GDHDH ZZ  |GDHDH  |
|sample text 3 JEYHEHH YY|JEYHEHH|
|sample text 4 QPRYRT EB |QPRYRT |
|sample text 5 KENBFBF XX|KENBFBF|
+------------------------+-------+

您的第二次尝试几乎是正确的-只使用一个正索引,因为您已经反转了数组,并且还记得从索引中减去1:

df2 = df.withColumn('word', F.reverse(F.split(F.col('line'), ' '))[1])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从Oracle PLSQL中的字符串中获取倒数第二个单词

分割字符串并获得倒数第二个单词

Javascript RegExp获取/之后的倒数第二个字符串

使用jQuery从字符串获取倒数第二个字符位置

从字符串中删除倒数第二个字符

查找字符串中倒数第二个出现的字符

在 Google 表格中倒数第二个空格后获取子字符串

如何提取MySQL中倒数第二个出现的字符串?

替换每行中倒数第二个出现的字符串

提取bat文件中的倒数第二个子字符串

[HTML / JS]在字符串的倒数第二个单词前添加“&”,如果该字符串中只有一个单词,则隐藏“&”

使用js正则表达式从字符串中获取路径的倒数第二个组件

Bash如何获取字符串的倒数第二个字符?

查找数字或字符的字符串的倒数第二个值

“......当需要在倒数第二个声明字符的字符串”中的toString()的说明

如何在字符串中找到倒数第二个索引?

在倒数第二个索引之后删除其余的字符串

在倒数第二个冒号之后提取子字符串

如何在python中的分隔符之后的字符串中获取倒数第二个和最后一个值

如何使用正则表达式在字符串的倒数第二个索引中插入特定字符

正则表达式从字符的倒数第二个出现开始显示字符串

在字符串中出现倒数第二个时间字符之前,请删除所有内容

获取倒数第二个值并输出

lxml获取倒数第二个元素

T SQL 提取倒数第二个和最后一个逗号之间的字符串

提取特殊字符“ /”之间的倒数第二个单词

(Java) 在倒数第二个正斜杠和最后一个正斜杠之后获取字符串值

从字符串中获取第二个单词

获取字符串中的第二个单词,直到遇到 '(' 或 ' '