dataframe - Spark:如何按列对数据框进行分组
问题描述
我有这个数据框“df”:
国家 | 顾客 | 全部的 |
---|---|---|
英国 | 约翰 | 4 |
法国 | 莎莉 | 3 |
英国 | 约翰 | 2 |
法国 | 莎莉 | 1 |
我想创建一个名为“out”的新df,其中我将“Country”列分组为行,将“customer”列分组。单元格应显示总和:
国家 | 约翰 | 莎莉 |
---|---|---|
英国 | 6 | 0 |
法国 | 0 | 4 |
我知道如何按行分组:
out = df.groupby.("Country").agg(sum("total"))
但我不知道如何按列中的“客户”列进行分组(保持第一列名为“国家”。
谢谢!
解决方案
如果你有这个数据集,看起来你想旋转你的数据:
+-------+------+-------+
|Product|Amount|Country|
+-------+------+-------+
| Banana| 1000| USA|
|Carrots| 1500| USA|
| Beans| 1600| USA|
| Orange| 2000| USA|
| Orange| 2000| USA|
| Banana| 400| China|
|Carrots| 1200| China|
| Beans| 1500| China|
| Orange| 4000| China|
| Banana| 2000| Canada|
|Carrots| 2000| Canada|
| Beans| 2000| Mexico|
+-------+-----+-------+
并希望像这样旋转它:
+-------+------+-----+------+----+
|Product|Canada|China|Mexico| USA|
+-------+------+-----+------+----+
| Orange| null| 4000| null|4000|
| Beans| null| 1500| 2000|1600|
| Banana| 2000| 400| null|1000|
|Carrots| 2000| 1200| null|1500|
我认为这是您想要的方式,那么您需要像这样运行您的代码:
val pivotDF = df.groupBy("Product").pivot("Country").sum("Amount")
pivotDF.show()
供参考:点击这里
推荐阅读
- javascript - 带有返回顶部功能的 JQuery 问题
- python - 是否有任何替代方法来检查特定索引的值是否在 python 列表中为空
- react-native - 使用 PanResponder 反应本机可折叠弹性标头
- amazon-ec2 - 从浏览器看不到 ec2 托管的灯站点
- r - 尝试在 R 中安装软件包时出错:“没有这样的文件或目录”
- git - Bitbucket - 通过 REST API 检查提交的构建状态
- ios - 将上传的 UIImage 作为 PNG 文件发送到服务器
- makefile - 具有覆盖范围的 CMake ninja 将 gcno 文件放在根二进制目录中
- java - 无法从 Java 为 DB2 for IDAA 启用查询加速器
- gradle - Gradle:任务“build”和“buildSearchableOptions”有什么区别?