微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Pyspark 在列表中获取唯一组合?

如何解决如何使用 Pyspark 在列表中获取唯一组合?

我使用下面的 python 代码从列表中获取独特的组合。

import itertools
unique_combinations = [] 
ss = [['0_20F','1_20F','2_20F','3_20F','4_20F','5_20F','6_20F','7_20F','8_20F','9_20F','10_20F'],['0_40F','1_40F','2_40F','3_40F','4_40F','5_40F','6_40F','7_40F','8_40F','9_40F','10_40F'],['0_40HC','1_40HC','2_40HC','3_40HC','4_40HC','5_40HC','6_40HC','7_40HC','8_40HC','9_40HC','10_40HC']]

for l in list(itertools.product(*ss)):
    unique_combinations.append(l)
    print(l)

示例输出如下。

('0_20F','0_40F','0_40HC')
('0_20F','1_40HC')
('0_20F','2_40HC')
('0_20F','3_40HC')
('0_20F','4_40HC')
('0_20F','5_40HC')
('0_20F','6_40HC')
('0_20F','7_40HC')
('0_20F','8_40HC')
('0_20F','9_40HC')

我需要使用 pyspark 完成此操作。是否可以通过 pyspark 完成?

解决方法

对于 ss 中的每个列表,都可以创建一个新的数据框。之后所有数据帧都可以是 cross joined:

dfs = [spark.createDataFrame([[s] for s in ssx],schema=[f"col_{i}"]) 
    for i,ssx in enumerate(ss)]

import functools
result = functools.reduce(lambda l,r: l.crossJoin(r),dfs )
result.show(5)

#+-----+-----+------+
#|col_0|col_1| col_2|
#+-----+-----+------+
#|0_20F|0_40F|0_40HC|
#|0_20F|0_40F|1_40HC|
#|0_20F|1_40F|0_40HC|
#|0_20F|1_40F|1_40HC|
#|1_20F|0_40F|0_40HC|
#+-----+-----+------+
#only showing top 5 rows

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?