【发布时间】:2018-04-18 11:47:52
【问题描述】:
我有一个如下火花数据框:
s. no | address | name | DoB
1 | st. 1 h.no 16 | X | 1-1-2001
2 | str n.1 house 16 | Y | 1-5-2001
3 | st. 3 h.no 1 | Z | 1-8-2002
现在读取地址,我们可以发现 X 和 Y 住在同一所房子里,以不同的方式输入相同的地址。我的目标是在同一地址下按地址分组,制作家庭数据框。
问题是没有明确的列可以执行标准 groupby。我有一个功能来查找两个地址是否相同或不同。
有没有办法利用它来执行自定义分组依据。 最终结果将是这样的:
s. no | address | names | DoB
1 | st. 1 h.no 16 | X,Y | 1-1-2001, 1-5-2001
3 | st. 3 h.no 1 | Z | 1-8-2002
【问题讨论】:
-
这不是一个小问题,因为您可能会遇到连接组件的问题。假设第 1 行与第 2 行相似,第 2 行与第 3 行相似,但您的函数说第 1 行和第 3 行不相似?如果您想要一个快速的解决方案,我会说创建一个函数来规范您的地址,以便您可以执行标准的 groupby 和 collect_list。只需做一些正则表达式,例如将
r"str\s+"更改为"st.",r"h\.no\b"更改为"house"等。这样您就可以将所有相似的地址转换为同一个字符串。 -
很好的答案,但问题是不同的人可以以不同的格式输入不同的地址。他们认为合适的唯一共同点是,如果两个人谈论相同的地址,那么他们提到的地址的相同组成部分发生了变化,我可以将其与函数进行比较。所以假设我根据没有提供的街道规范了一个地址,而在其他地址中可能有其他东西
标签: python group-by pyspark customization