我使用的是PySpark,我想用一种简单的方法来完成下一个过程,而不是过于复杂。
假设我有一个类似这样的表:
| 识别号|信件|
| - ------|- ------|
| 1个|a、B、c、d|
| 第二章|B、丁、乙|
| 三个|c、y、u|
我想从“字母”列中获取此 Dataframe 中的唯一字母,这将是:列表= [a,B,c,d,y,u]。
我试过使用in操作符,我不知道如何迭代每个寄存器,但我不想搞得一团糟,因为最初的计划是针对大数据集。
我使用的是PySpark,我想用一种简单的方法来完成下一个过程,而不是过于复杂。
假设我有一个类似这样的表:
| 识别号|信件|
| - ------|- ------|
| 1个|a、B、c、d|
| 第二章|B、丁、乙|
| 三个|c、y、u|
我想从“字母”列中获取此 Dataframe 中的唯一字母,这将是:列表= [a,B,c,d,y,u]。
我试过使用in操作符,我不知道如何迭代每个寄存器,但我不想搞得一团糟,因为最初的计划是针对大数据集。
2条答案
按热度按时间5cg8jx4n1#
你可以试试这样的方法:
这里发生了什么:
1.首先,我使用F. split通过""拆分字符串,并使用F. array_distinct在行级别删除重复项
1.我使用collect_set将所有不同的数组放到一行中,在这个阶段,这是数组的数组,它看起来像这样:
[[b,d],[a,b,c,d],[c,y,u]
1.然后我使用flatten将所有值作为单独的字符串:
[b、d、a、b、c、d、c、y、u]
1.仍然有一些重复项会被array_distinct删除,因此最后的输出如下所示:
[b、d、a、c、y、u]
jk9hmnmh2#
根据数据集和数组的大小(如果它们非常大,这可能不是您想要的路径),您可以使用
explode
函数轻松获得所需的内容: