使用PySp在ArrayType列中按项分组

2024-10-06 15:22:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有Pyspark数据帧,模式如下

root
 |-- id: string (nullable = true)
 |-- address: string (nullable = true)
 |-- phone_list: array (nullable = true)
 |    |-- element: string (containsNull = true)

示例:

id        address        phone_list
1         HaNoi          [ 012346789, 032145698, 0565622253 ]
2         Singapore      [ 012346789, 069855633 ]
3         Moscow         [ 023466466, 069855633 ]
4         Tokyo          [ 044656611, 061316561 ]  

您可以看到,id 1与id 2(012346789)有一个共同的电话号码,id 2与id 3(069855633)有一个共同的电话号码,因此我想创建新的dataframe来将这些id分组在一起。 它看起来像:

id  address                               phone_list
1   [ HaNoi , Singapore, Moscow ]         [ 012346789, 032145698, 0565622253, 069855633, 023466466 ]
2   [ Tokyo ]                            [ 044656611, 061316561 ]  

有人知道提示或解决方法吗?你知道吗


Tags: 数据idtruestringaddress模式phone电话号码
2条回答

你将需要首先爆炸的电话号码,然后做一个小组的电话号码和收集名单的地址。此外,您还需要收集电话号码上的\u集(collect \u set()包含不同的元素,collect \u list()包含所有元素)以获得不同的电话号码集。如果你想要完整的代码,请告诉我。你知道吗

在你的情况下我会做的是

df= pyspark.sql('''select id, address, phone_number 
from table_name as tb  LATERAL VIEW EXPLODE(tb.phone_list)as phone_number ''') 

我会按电话号码分组!你知道吗

相关问题 更多 >