如何根据 PySpark Dataframe 中的模式从列表中删除某些字符

How to remove some character from the list based on pattern in PySpark Dataframe

这是字段包含列表。

+--------------------+
|      categoryPathId|
+--------------------+
|[summer|Summer, w...|
|[ab|ba, caa|da]     |
|                  []|
|[shop-all|Shop Al...|
+--------------------+

列表的每个值都包含两个用竖线符号(|)分隔的值。

会变成这样[ab|ba,caa|da]。我想删除列表的每个值中的第二个单词(即管道符号之后)。像这样的预期结果 [ab,caa].

你能帮我解决这个问题吗...

Spark2.4+

您可以使用高阶函数来执行此操作

from pyspark.sql.functions import *
df = df.select(expr('''transform(categoryPathId, x->split(x,'\\|')[0])''').alias('categoryPathId1'))
df.show()
+---------------+
|categoryPathId1|
+---------------+
|        [a, c] |
|        [a, c] |
|        [a, c] |
+---------------+