gpt4 book ai didi

apache-spark - 列表上的 Spark 数据帧操作返回 [Ljava.lang.Object;@]

转载 作者:行者123 更新时间:2023-12-01 11:15:45 25 4
gpt4 key购买 nike

我有一个 pyspark 数据框,我在其中对数据进行了分组以列出 collect_list .

from pyspark.sql.functions import udf, collect_list
from itertools import combinations, chain

#Create Dataframe
df = spark.createDataFrame( [(1,'a'), (1,'b'), (2,'c')] , ["id", "colA"])

df.show()
>>>
+---+----+
| id|colA|
+---+----+
| 1| a|
| 1| b|
| 2| c|
+---+----+

#Group by and collect to list
df = df.groupBy(df.id).agg(collect_list("colA").alias("colAlist"))

df.show()
>>>
+---+--------+
| id|colAList|
+---+--------+
| 1| [a, b]|
| 2| [c]|
+---+--------+

然后我使用一个函数将列表元素的所有组合查找到一个新列表

allsubsets = lambda l: list(chain(*[combinations(l , n) for n in range(1,len(l)+1)]))
df = df.withColumn('colAsubsets',udf(allsubsets)(df['colAList']))

所以我会期待类似的东西

+---+--------------------+
| id| colAsubsets |
+---+--------------------+
| 1| [[a], [b], [a,b]] |
| 2| [[b]] |
+---+--------------------+

但我得到:

df.show()
>>>
+---+--------+-----------------------------------------------------------------------------------------+
|id |colAList|colAsubsets |
+---+--------+-----------------------------------------------------------------------------------------+
|1 |[a, b] |[[Ljava.lang.Object;@75e2d657, [Ljava.lang.Object;@7f662637, [Ljava.lang.Object;@b572639]|
|2 |[c] |[[Ljava.lang.Object;@26f67148] |
+---+--------+-----------------------------------------------------------------------------------------+

有什么想法吗?然后也许如何将列表展平到不同的行?

最佳答案

您需要做的就是以扁平化的方式从chaincombinations 创建的对象中提取元素

变化多端

allsubsets = lambda l: list(chain(*[combinations(l , n) for n in range(1,len(l)+1)]))

以下内容

allsubsets = lambda l: [[z for z in y] for y in chain(*[combinations(l , n) for n in range(1,len(l)+1)])]

应该给你

+---+---------+------------------+
|id |colA_list|colAsubsets |
+---+---------+------------------+
|1 |[a, b] |[[a], [b], [a, b]]|
|2 |[c] |[[c]] |
+---+---------+------------------+

希望回答对你有帮助

关于apache-spark - 列表上的 Spark 数据帧操作返回 [Ljava.lang.Object;@],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51629100/

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