我如何將每一行的元素與一個組配對?
id title comp
1 'A' 45
1 'B' 32
1 'C' 1
2 'D' 5
2 'F' 6
輸出:
如果他們有相同的'id',我想配對行
output:
id title comp
1 'A','B' 45,32
1 'B','C' 32,1
2 'D','F' 5,6
uj5u.com熱心網友回復:
使用視窗函式。收集目標列中直接連續元素的串列。通過使用 array_join 將結果陣列轉換為字串來洗掉陣列括號。最后一行將有更少的元素。過濾掉串列中少于 0ne 個元素的位置。
from pyspark.sql.functions import *
from pyspark.sql import Window
win=Window.partitionBy().orderBy(F.asc('title')).rowsBetween(0,1)
df.select("id", *[F.array_join(F.collect_list(c).over(win),',').alias(c) for c in df.drop('id').columns]).filter(length(col('comp'))>1).show()
--- ----- -----
| id|title| comp|
--- ----- -----
| 1| A,B|45,32|
| 1| B,C| 32,1|
| 1| C,D| 1,5|
| 2| D,F| 5,6|
--- ----- -----
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/448524.html
