嗨,我想在 pyspark 中转置一个数据框
Posted
技术标签:
【中文标题】嗨,我想在 pyspark 中转置一个数据框【英文标题】:Hi, I want to transpose a dataframe in pyspark 【发布时间】:2021-12-16 12:23:11 【问题描述】:df_original
数据框看起来像这样。但是,我想像这样转置它
df_resulting
任何人都可以提出任何方法。
我已经尝试过枢轴,但在这种情况下它不起作用
【问题讨论】:
【参考方案1】:假设您有一个名为 df
的数据框,其结构如下。
df.show()
+--------+---------+--------+-----+
| duns|eff_month|other_p1|pc_p1|
+--------+---------+--------+-----+
|69193610| 1| 0.123|0.109|
|69193610| 2| 0.456| 0.79|
|69193610| 3| 0.789| 0.92|
|69193610| 4| 0.132| 0.16|
|69193610| 5| 0.456|0.596|
|69193610| 6| 0.835|0.783|
|69193610| 7| 0.743|0.876|
|69193610| 8| 0.743|0.584|
|69193610| 9| 0.013|0.684|
|69193610| 10| 0.451| 0.09|
|69193610| 11| 0.399|0.791|
|69193610| 12| 0.423|0.242|
|69193611| 1| 0.091|0.808|
|69193611| 2| 0.451|0.768|
|69193611| 3| 0.132|0.269|
|69193611| 4| 0.819|0.863|
|69193611| 5| 0.312|0.362|
|69193611| 6| 0.382| 0.93|
|69193611| 7| 0.981| 0.09|
|69193611| 8| 0.128|0.416|
|69193611| 9| 0.481|0.168|
|69193611| 10| 0.291|0.601|
|69193611| 11| 0.312|0.264|
|69193611| 12| 0.321|0.758|
+--------+---------+--------+-----+
您可以执行以下操作。
from pyspark.sql import functions
df = (df.withColumn("eff_month",
functions.concat(functions.lit("month"),
functions.col("eff_month"))))
df1 = (df.groupBy("duns")
.pivot("eff_month")
.agg(functions.sum("pc_p1"))
.withColumn("_NAME_", functions.lit("pc_p1")))
df2 = (df.groupBy("duns")
.pivot("eff_month")
.agg(functions.sum("other_p1"))
.withColumn("_NAME_", functions.lit("other_p1")))
final_df = df1.union(df2)
final_df.show()
+--------+------+-------+-------+-------+------+------+------+------+------+------+------+------+--------+
| duns|month1|month10|month11|month12|month2|month3|month4|month5|month6|month7|month8|month9| _NAME_|
+--------+------+-------+-------+-------+------+------+------+------+------+------+------+------+--------+
|69193610| 0.109| 0.09| 0.791| 0.242| 0.79| 0.92| 0.16| 0.596| 0.783| 0.876| 0.584| 0.684| pc_p1|
|69193611| 0.808| 0.601| 0.264| 0.758| 0.768| 0.269| 0.863| 0.362| 0.93| 0.09| 0.416| 0.168| pc_p1|
|69193610| 0.123| 0.451| 0.399| 0.423| 0.456| 0.789| 0.132| 0.456| 0.835| 0.743| 0.743| 0.013|other_p1|
|69193611| 0.091| 0.291| 0.312| 0.321| 0.451| 0.132| 0.819| 0.312| 0.382| 0.981| 0.128| 0.481|other_p1|
+--------+------+-------+-------+-------+------+------+------+------+------+------+------+------+--------+
【讨论】:
非常感谢您的帮助。你是个天才:)以上是关于嗨,我想在 pyspark 中转置一个数据框的主要内容,如果未能解决你的问题,请参考以下文章
Python pyspark 将 DF 写入 .csv 并存储在本地 C 盘