英文:
How to achieve rows to columns from one data frame to another data frame in Pyspark
问题
如何通过 Azure Synapse 笔记本中的任何函数,使用 PySpark 来实现这一点?
英文:
How to achieve this through pyspark using any of the functions to use in notebooks of Azure Synapse?
答案1
得分: 1
尝试使用pivot + groupBy + agg()
函数来处理这种情况。
示例:
from pyspark.sql.functions import *
df = spark.createDataFrame([('1234','VW','1022'),('1234','YH','5466'),('12345','VW','1022'),('12345','YH','5466')],['col1','col2','col3'])
df.groupBy("col1").pivot("col2").agg(first(col("col3"))).show(10,False)
#+-----+----+----+
#|col1 |VW |YH |
#+-----+----+----+
#|1234 |1022|5466|
#|12345|1022|5466|
#+-----+----+----+
如果您需要特定格式的输出列名,可以使用toDF()
来更改列名。
df.groupBy("col1").pivot("col2").agg(first(col("col3"))).toDF("col1","col2=VW","col2=YH").show(10,False)
#+-----+-------+-------+
#|col1 |col2=VW|col2=YH|
#+-----+-------+-------+
#|1234 |1022 |5466 |
#|12345|1022 |5466 |
#+-----+-------+-------+
英文:
Try with pivot + groupBy + agg()
function for this case.
Example:
from pyspark.sql.functions import *
df = spark.createDataFrame([('1234','VW','1022'),('1234','YH','5466'),('12345','VW','1022'),('12345','YH','5466')],['col1','col2','col3'])
df.groupBy("col1").pivot("col2").agg(first(col("col3"))).show(10,False)
#+-----+----+----+
#|col1 |VW |YH |
#+-----+----+----+
#|1234 |1022|5466|
#|12345|1022|5466|
#+-----+----+----+
If you need the output column names in specific format then use toDF()
to change the column names.
df.groupBy("col1").pivot("col2").agg(first(col("col3"))).toDF("col1","col2=VW","col2=YH").show(10,False)
#+-----+-------+-------+
#|col1 |col2=VW|col2=YH|
#+-----+-------+-------+
#|1234 |1022 |5466 |
#|12345|1022 |5466 |
#+-----+-------+-------+
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论