gpt4 book ai didi

apache-spark - Spark ;检查元素是否在 collect_list 中

转载 作者:行者123 更新时间:2023-12-04 04:18:15 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to filter based on array value in PySpark?

(2 个回答)


3年前关闭。




我正在处理一个数据框 df ,例如以下数据框:

df.show()

输出:
+----+------+
|keys|values|
+----+------+
| aa| apple|
| bb|orange|
| bb| desk|
| bb|orange|
| bb| desk|
| aa| pen|
| bb|pencil|
| aa| chair|
+----+------+

我用 collect_set聚合并获取一组消除了重复元素的对象(或 collect_list 获取对象列表)。
df_new = df.groupby('keys').agg(collect_set(df.values).alias('collectedSet_values'))

结果数据帧如下:
df_new.show()

输出:
+----+----------------------+
|keys|collectedSet_values |
+----+----------------------+
|bb |[orange, pencil, desk]|
|aa |[apple, pen, chair] |
+----+----------------------+

我正在努力寻找一种方法来查看特定关键字(如“椅子”)是否在结果对象集中(在 collectedSet_values 列中)。我不想跟 udf解决方案。

请评论您的解决方案/想法。

亲切的问候。

最佳答案

其实还有一个不错的功能array_contains这对我们来说是这样的。我们将它用于一组对象的方式与 here 中的相同.要知道每组对象中是否存在单词“chair”,我们可以简单地执行以下操作:

df_new.withColumn('contains_chair', array_contains(df_new.collectedSet_values, 'chair')).show()

输出:
+----+----------------------+--------------+
|keys|collectedSet_values |contains_chair|
+----+----------------------+--------------+
|bb |[orange, pencil, desk]|false |
|aa |[apple, pen, chair] |true |
+----+----------------------+--------------+

这同样适用于 collect_list 的结果.

关于apache-spark - Spark ;检查元素是否在 collect_list 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51499460/

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