pyspark如何有效地进行这种转换? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyspark如何有效地进行这种转换? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我是pyspark的新手,只知道它最简单的操作。我的英语非常糟糕,对不起,我无法详细描述,以下是样本!谢谢你的回答

  • 像这样的数据帧:

| name |    id | flag  | cnt |
| li   | 19196 | true  |  10 |
| li   | 19196 | false |  15 |
  • 我想将其转换为:

| name |    id | flag_true | flag_false |
| li   | 19196 |        10 |         15 |
答案

您可以使用数据透视表:

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?

如何在查询生成器中有效地转换嵌套 SQL [重复]

重构pyspark数据框

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

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

如何将 json 转换为 pyspark 数据帧(更快的实现)[重复]