【问题标题】:pyspark how to do this conversion efficiently? [duplicate]pyspark 如何有效地进行这种转换? [复制]
【发布时间】: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 |

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案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|
    +----+-----+----------+---------+
    

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多