gpt4 book ai didi

pyspark - 如何在数据框 Spark 中的一列中获取列表的长度?

转载 作者:行者123 更新时间:2023-12-03 20:27:03 31 4
gpt4 key购买 nike

我有一个 df,其“产品”列是如下列表:

+----------+---------+--------------------+
|member_srl|click_day| products|
+----------+---------+--------------------+
| 12| 20161223| [2407, 5400021771]|
| 12| 20161226| [7320, 2407]|
| 12| 20170104| [2407]|
| 12| 20170106| [2407]|
| 27| 20170104| [2405, 2407]|
| 28| 20161212| [2407]|
| 28| 20161213| [2407, 100093]|
| 28| 20161215| [1956119]|
| 28| 20161219| [2407, 100093]|
| 28| 20161229| [7905970]|
| 124| 20161011| [5400021771]|
| 6963| 20160101| [103825645]|
| 6963| 20160104|[3000014912, 6626...|
| 6963| 20160111|[99643224, 106032...|

如何添加新列 product_cnt这是 products的长度列表?以及如何过滤 df 以获取具有给定产品长度条件的指定行?
谢谢。

最佳答案

Pyspark 有一个内置函数来实现你想要的功能,称为 size . http://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.functions.size .
要将其添加为列,您只需在 select 语句中调用它即可。

from pyspark.sql.functions import size

countdf = df.select('*',size('products').alias('product_cnt'))

过滤与@titiro89 描述的完全一样。此外,您可以使用 size过滤器中的功能。这将允许您通过以下方式绕过添加额外的列(如果您希望这样做)。
filterdf = df.filter(size('products')==given_products_length)

关于pyspark - 如何在数据框 Spark 中的一列中获取列表的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44541605/

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