dataframe - 如何将数据框值转换为 Map[String,List[String]]?
问题描述
我想将下面的数据框转换为 Map[String,List[String]]。我已更改初始数据框以获取列表格式的名称列(使用collect_list
),但我无法将其转换为Map[String,List[String]]
.
数据框
+---------+-------+
|City | Name |
+---------+-------+
|Mumbai |[A,B] |
|Pune |[C,D] |
|Delhi |[A,D] |
+---------+-------+
预期输出:
Map(Mumbai -> List(A,B), Pune -> List(C,D), Delhi-> List(A,D))
解决方案
您可以转换为 rdd 并收集为 Map 如下
val df = Seq(
("Mumbai", List("A", "B")),
("Pune", List("C", "D")),
("Delhi", List("A", "D"))
).toDF("city", "name")
val map: collection.Map[String, List[String]] = df.rdd
.map(row => (row.getAs[String]("city"), row.getAs[List[String]]("name")))
.collectAsMap()
希望这可以帮助!
推荐阅读
- javascript - 在 ASP.NET MVC 中解析莫里斯图的数据
- java - 从反应堆级别运行时的 Maven 强制执行器问题
- java - 错误:http错误:android生成签名apk中的内部错误(500)
- angular - 如何直接从 formControl 获取验证器?
- android - 如何在H264上接听电话和丢失包时修复黑屏
- vba - 过滤和计算 3 列之间的匹配项
- html - 在 Angular Material Web 应用的单个页面上显示普通 HTML 元素
- c++ - 如何在 C++ 中使用 unordered_maps 的 unordered_map?
- python - ARIMA Forecast: Cannot cast ufunc subtract output from dtype('float64') to dtype('int64') with casting rule 'same_kind'
- angular - Angular 2+ 如何使用变量值来调用指令?