我有下面格式的一行嵌套json
{"2018-10-09": {"CAD": 1.4861, "JPY": 129.45, "NZD": 1.7784, "USD": 1.1435}, "2018-11-30": {"CAD": 1.5116, "JPY": 128.99, "NZD": 1.6556, "USD": 1.1359}}
这只是json的一部分,实际的json非常大。
我需要使用spark读取这个json并做一些预处理。
这是密码
df = spark.read.format("json") \
.option("inferSchema", "true") \
.option("header", 'false') \
.option("sep", ",") \
.load(file_location)
display(df)
架构如下所示
我希望数据看起来像这样
date CAD JPY NZD USD
2018-01-02 1.51 135.35 1.69 1.2
2018-01-03 1.50 134.97 1.69 1.209
所以我的新模式应该包含5个字段。
我试着做到如下
df1=df.select("2018-12-27.CAD","2018-12-27.JPY","2018-12-27.NZD","2018-12-27.USD")
但是它需要选择每个日期值,并且有100个日期值。这是痛苦和耗时的。
做这件事的有效方法是什么?
1条答案
按热度按时间jei2mxaa1#
下面的代码是
scala
,您可以将此转换为python
.解释
上面的代码会给你下面的输出。
一旦你有了以上的输出,你就很容易做到
explode
数组提取(&E)struct
柱。