我想执行一些转换以获得所需的输出:
之前:
Column 1 | Column 2 | Column 3
--------------------------------
NBA | BULLS | ['Michael', 'Jordan', '23']
NBA | BULLS | ['Scottie', 'Pippen', '33']
NBA | LAKERS | ['Kobe', 'Bryant', '24']
之后:
Column 1 | Column 4
--------------------------------
NBA | [BULLS : [['Michael', 'Jordan', '23'],['Scottie', 'Pippen', '33']]
,LAKERS : ['Kobe', 'Bryant', '24']]
模式化
之前:
root
|-- string
|-- string
|-- struct
|-- string
|-- string
|-- int
之后:
root
|-- string
|-- array:string
|-- array:struct
|-- string
|-- string
|-- int
编辑:
在建议下,我能够做到这一点:
df.groupby('Column 1', 'Column 2')
.agg(collect_list(struct('Column 3')).alias('Column 4'))
.groupby('Column 1')
.agg(collect_list(struct('Column 2', 'Column 4')).alias('Column 5'))