a b
[{'npi': [1013006469, 1003263552], 'tin': {'type': 'npi', 'value': '1013006469'}}, {'npi': [1487607883], 'tin': {'type': 'npi', 'value': '1487607883'}}] 0
[{'npi': [1275086126], 'tin': {'type': 'npi', 'value': '1275086126'}}, {'npi': [1285698381], 'tin': {'type': 'npi', 'value': '1285698381'}}] 2
以上是输入 Dataframe ,我希望从中展开字符串形式的**'a'**列。我需要以下输出
a_npi a_tin_type a_tin_value b
1013006469 npi 1013006469 0
1003263552 npi 1013006469 0
1487607883 npi 1487607883 0
1275086126 npi 1275086126 2
1285698381 npi 1285698381 2
下面是我代码,但它返回的都是空值
inp_sch = spark.read.json(df.select(col('a').alias('jsonbody')).rdd.map(lambda x: x.jsonbody)).schema
inp_json = df.select('*', from_json('a', inp_sch).alias('jsonstr'))
1条答案
按热度按时间jpfvwuh41#
在pyspark中为tin使用from_json函数将完成此操作。
范例
和第一列的数组,类似地使用explode()函数。