使用;拆分数组如果存在,在字符串的末尾删除,以得到一个数组



希望基于字符串列创建一个新列,如果存在,该字符串列的分隔符(";")和delete (";")输入:

"511;520;611;"
"322;620"  
"3;321;"
"334;344"

期望输出:

+Column        | +new column
"511;520;611;" | [511,520,611]
"322;620"      | [322,620]
"3;321;"       | [3,321]
"334;344"      | [334,344]

试题:

data = data.withColumn(
"newcolumn",
split(col("column"), ";"))

但是我在数组末尾得到一个空字符串,就像这里我想删除它,如果存在

+Column        | +new column
"511;520;611;" | [511,520,611,empty string]
"322;620"      | [322,620]
"3;321;"       | [3,321,empty string]
"334;344"      | [334;344]

对于spark版本>= 2.4,使用filter函数和!= ''条件来过滤数组中的空字符串

from pyspark.sql.functions import expr
data = data.withColumn("newcolumn", expr("filter(split(column, ';'), x -> x != '')"))