gpt4 book ai didi

python - PySpark - 将单个整数列表与列表列进行比较

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:22 25 4
gpt4 key购买 nike

我正在尝试检查 spark 数据框(带有列表的列)中的哪些条目包含给定列表中的最大数量的值。

我想到的最佳方法是使用 rdd.foreach() 遍历数据帧,并使用 python 的 set1.intersection(set2)< 将给定列表与每个条目进行比较.

我的问题是 spark 是否有任何内置功能,因此可以避免使用 .foreach 进行迭代?

感谢您的帮助!

附言我的数据框如下所示:

+-------------+---------------------+                                           
| cardnumber|collect_list(article)|
+-------------+---------------------+
|2310000000855| [12480, 49627, 80...|
|2310000008455| [35531, 22564, 15...|
|2310000011462| [117112, 156087, ...|
+-------------+---------------------+

我试图在第二列中找到与给定文章列表交叉点最多的条目,例如 [151574, 87239, 117908, 162475, 48599]

最佳答案

您可以在数据框中尝试相同的设置操作,而不是使用 rdd.foreach:

from pyspark.sql.functions import udf, li, col
my_udf=udf(lambda A,B: list(set(A).intersection(set(B))))
df=df.withColumn('intersect_value', my_udf('A', 'B'))

您可以使用 len 函数在 UDF 本身中获取相交列表的大小,并从此数据帧执行您想要的操作。

关于python - PySpark - 将单个整数列表与列表列进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48547700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com