pyspark 如何有效地进行这种转换? [复制]
Posted
技术标签:
【中文标题】pyspark 如何有效地进行这种转换? [复制]【英文标题】:pyspark how to do this conversion efficiently? [duplicate] 【发布时间】:2019-03-20 15:34:01 【问题描述】:我是 pyspark 的新手,只知道它最简单的操作。而且我的英语很糟糕,对不起,我无法描述得很详细,以下是示例!谢谢你的回答
这样的数据框:| name | id | flag | cnt |
| li | 19196 | true | 10 |
| li | 19196 | false | 15 |
我想把它转换成:
| name | id | flag_true | flag_false |
| li | 19196 | 10 | 15 |
【问题讨论】:
【参考方案1】:您可以为此使用数据透视表:
df.groupBy(['name', 'id'])\
.pivot('flag')\
.agg(f.sum('cnt'))\
.withColumnRenamed('true', 'flag_true')\
.withColumnRenamed('false', 'flag_false')\
.show()
打印出来的:
+----+-----+----------+---------+
|name| id|flag_false|flag_true|
+----+-----+----------+---------+
| li|19196| 15| 10|
+----+-----+----------+---------+
【讨论】:
以上是关于pyspark 如何有效地进行这种转换? [复制]的主要内容,如果未能解决你的问题,请参考以下文章