首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将星火DataFrame列中的JSON数据转换为表格格式

将星火DataFrame列中的JSON数据转换为表格格式
EN

Stack Overflow用户
提问于 2021-04-09 00:35:58
回答 1查看 419关注 0票数 0

我得到了从一个多行JSON文件加载的spark dataframe

列(data)模式之一如下:

代码语言:javascript
代码运行次数:0
运行
复制
 root
 |-- data: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- f: struct (nullable = true)
 |    |    |    |-- 0: struct (nullable = true)
 |    |    |    |    |-- v: double (nullable = true)
 |    |    |-- ts: string (nullable = true)

和抽样数据:

代码语言:javascript
代码运行次数:0
运行
复制
array
0: {"f": {"0": {"v": 25.08}}, "ts": "2021-01-11T05:59:00.170Z"}
1: {"f": {"0": {"v": 25.92}}, "ts": "2021-03-22T03:29:00.170Z"}
2: {"f": {"0": {"v": 25.94}}, "ts": "2021-03-22T03:39:00.173Z"}
3: {"f": {"0": {"v": 25.95}}, "ts": "2021-03-22T03:49:00.170Z"}
4: {"f": {"0": {"v": 25.99}}, "ts": "2021-03-22T04:00:00.173Z"}

我只想提取T和v。

实例结果

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-09 08:12:40

可以将结构数组分解为多个行,并选择所需的struct元素:

代码语言:javascript
代码运行次数:0
运行
复制
import pyspark.sql.functions as F

df2 = df.select(F.explode('data').alias('data')).select('data.ts', 'data.f.0.v')

df2.show(truncate=False)
+------------------------+-----+
|ts                      |v    |
+------------------------+-----+
|2021-01-11T05:59:00.170Z|25.08|
|2021-03-22T03:29:00.170Z|25.92|
|2021-03-22T03:39:00.173Z|25.94|
|2021-03-22T03:49:00.170Z|25.95|
|2021-03-22T04:00:00.173Z|25.99|
+------------------------+-----+
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67013548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档