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 如何有效地进行这种转换? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何有效地计算数据帧的行数? [复制]

如何有效地将 MySQL 表读入 Apache Spark/PySpark?

重构pyspark数据框

如何有效地计算pyspark中的平均值和标准差

如何有效地将 PySpark 数据框中的行相乘?

如何在pyspark中转换这个嵌套的json? [复制]