在pyspark中,如何过滤列表列至少有一个以子字符串开头的元素的行?

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

我有一个以下结构的数据框

姓名 IRC_列表
A
[LLL,V23,VLX]
B
[LSS,LX3,LLX]
C
[LSS,L12,VLX]

过滤后表格应为:

姓名 IRC_列表
A
[LLL,V23,VLX]
C
[LSS,L12,VLX]

B 应该被过滤掉,因为对应的列表没有任何以“V”开头的元素。

仅供参考,我使用的是 Spark 2.3.0

pyspark
1个回答
0
投票

这是带有参数和自己数据的动态方法:

从 pyspark.sql.functions 导入 *

param = "V"
df = spark.createDataFrame(
    [( 1, ["Vapple", "Kpear"],), (2, ["plan", "pipeV"],), (3, ["cat", "Vant"],)], ["key", "value_string_array"]
)

filter_starts_with = lambda s: s.startswith(param)
df.filter(exists(col("value_string_array"), filter_starts_with)).show()
© www.soinside.com 2019 - 2024. All rights reserved.