gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:22:48 25 4
gpt4 key购买 nike

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

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])

但他们返回 Null

最佳答案

要使用负索引,您可以使用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])

关于apache-spark - 使用 PySpark 从字符串中获取倒数第二个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66171833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com