我有一个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)
谢谢!
这是获取上面序列号的最后几位的方法:
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]))
如果不起作用,请分享结果。
对于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|
+-----------------+------+