apache-spark - 如何按 id 组合数据框中的行
问题描述
我有一个数据框:
+---------+---------------------+
| id| Name|
+---------+---------------------+
| 1| 'Gary'|
| 1| 'Danny'|
| 2| 'Christopher'|
| 2| 'Kevin'|
+---------+---------------------+
我需要合并 id 列中的所有 Name 值。请告诉我如何从中获得:
+---------+------------------------+
| id| Name|
+---------+------------------------+
| 1| ['Gary', 'Danny']|
| 2| ['Kevin','Christopher']|
+---------+------------------------+
解决方案
您可以使用 groupBy 和 collect 函数。根据您的需要,您可以使用列表或集合等。
df.groupBy(col("id")).agg(collect_list(col("Name"))
如果你想要重复的值
df.groupBy(col("id")).agg(collect_set(col("Name"))
如果你想要独特的价值
推荐阅读
- ruby - 在 Windows 上的 JRuby 9.2.8.0 上安装 wdm gem
- reactjs - 无法将类组件转换为功能组件
- excel - 工作表类的运行时错误“1004”PasteSpecial 方法失败(仅当 CHROME 打开时)
- leaflet - 更改传单归属控制位置
- android - Flutter如何达到父小部件文本表单字段的值?
- javascript - 在 Node.js 中使用 TLS/SSL 隐式加密连接到 FTP 服务器
- google-app-engine - 使用 Google App Engine php55 或 php7 将任意大文件下载到 Cloud Storage 的解决方案是什么?
- reactjs - 如何以编程方式将焦点设置在输入上
- python - python中的INT到STRING转换
- android - 从响应正文中返回代码 200 而不是 JSON 的 gists API 获取 json 响应