如何在PySpark中透视2列

ctehm74n  于 2023-02-09  发布在  Apache
关注(0)|答案(1)|浏览(147)

我有一个如下所示的 Dataframe ,我需要对其进行透视,以便创建两个新列,其中值“var 1”和“var 2”取自列标题“var 3”,然后与每个列关联的金额为“var 4”,并按id分组。我正在使用的 Dataframe 中还有其他列,但它们都处于同一级别的id。
| 身份证|变量1|变量2|
| - ------|- ------|- ------|
| 四六五|一千|二百|
| 四百五十五|二○ ○ ○年|四百|
结果输出为:
| 身份证|变量3|变量4|
| - ------|- ------|- ------|
| 四六五|变量1|一千|
| 四六五|变量2|二百|
| 四百五十五|变量1|二○ ○ ○年|
| 四百五十五|变量2|四百|

lyr7nygr

lyr7nygr1#

使用取消旋转:

df.unpivot(['id'], ['var1', 'var2'], 'var3', 'var4').show()

stack

df.selectExpr("id", "stack(2, 'var1', var1, 'var2', var2) as (var3, var4)").show()

或者melt

df.melt(ids=['id'], values=['var1', 'var2'],variableColumnName="var3",valueColumnName="var4").show()

输入:

输出:

相关问题