我需要从字符串值中获取倒数第二个单词。
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] 删除。
我来说两句