我想转换这个PyparkDataframe:
df = spark.createDataFrame([
("A", 1),
("A", 2),
("A", 3),
("B", 1),
("B", 2),
("B", 4),
("B", 5)
],
["name", "connect"]
)
df.show()
+----+-------+
|name|connect|
+----+-------+
| A| 1|
| A| 2|
| A| 3|
| B| 1|
| B| 2|
| B| 4|
| B| 5|
+----+-------+
转换为以下格式:
df_out = spark.createDataFrame([
("A", "A", 3),
("B", "B", 4),
("A", "B", 2)
],
["name1", "name2", "n_connect"]
)
df_out.show()
+-----+-----+---------+
|name1|name2|n_connect|
+-----+-----+---------+
| A| A| 3|
| B| B| 4|
| A| B| 2|
+-----+-----+---------+
i、 我想知道每个名字有多少个“连接”,我想知道每个名字之间有多少个共享的“连接”。spark中有什么标准函数允许我这样做吗?
1条答案
按热度按时间wlzqhblo1#
你可以做一个自连接,合并相同的组合,即a->b和b->a,然后countdistinct
connect
对于每个组合。下面我们用sort_array(array(d1.name, d2.name))
要对唯一的名称组合进行分组,请执行以下操作:你可以用Pandas做类似的事情:
根据@anky的建议,使用np.sort()对名称进行排序: