希望基于字符串列创建一个新列,如果存在,该字符串列的分隔符(";")和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 != '')"))