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

问题描述 投票:3回答:1

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

我是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个回答
3
投票

您可以使用数据透视表:

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|
+----+-----+----------+---------+
© www.soinside.com 2019 - 2024. All rights reserved.