如何在pyspark中最后一个下划线后提取所有元素?

问题描述 投票:0回答:2

我有一个pyspark数据框,其中包含我要从中提取信息的列。举个例子,该列是4个外键的组合,看起来像这样:

例1:12345-123-12345-4

例2:5678-4321-123-12

我正在尝试提取字符串的最后一部分,在本例中为4和12。有关如何执行此操作的任何想法?

我尝试了以下操作:

df.withColumn("result", sf.split(sf.col("column_to_split"), '\_')[1])\
  .withColumn("result", sf.col("result").cast('integer'))

但是,两位数的结果为空,并且只返回一位数字的整数(0-9)

谢谢!

python pyspark pyspark-sql pyspark-dataframes
2个回答
0
投票

这是获取上面序列号的最后几位的方法:

serial_no = '12345-123-12345-4'
last_digit = serial_no.split('-')[-1]
print(last_digit)

因此,请尝试:

df.withColumn("result", int(sf.col("column_to_split").split('-')[-1]))

如果不起作用,请分享结果。


0
投票

对于spark2.4,您应在element_at之后在-1上使用array split

from pyspark.sql import functions as sf
df.withColumn("result", sf.element_at(sf.split("column_to_split","\-"),-1)).show()

+-----------------+------+
|  column_to_split|result|
+-----------------+------+
|12345-123-12345-4|     4|
| 5678-4321-123-12|    12|
+-----------------+------+
© www.soinside.com 2019 - 2024. All rights reserved.