我想从pyspark中的现有数据框创建一个新的数据框。数据框“ df”包含一列名为“ data”的列,该列具有字典的行并且具有作为字符串的模式。而且每个字典的键都不是固定的,例如名称和地址是第一行字典的键,但其他行可能不是这样,它们可能有所不同。以下是该示例;
........................................................
data
........................................................
{"name": "sam", "address":"uk"}
........................................................
{"name":"jack" , "address":"aus", "occupation":"job"}
.........................................................
如何转换为具有以下单独列的数据框。
name address occupation
sam uk
jack aus job
答案 0 :(得分:2)
将data
转换为RDD,然后使用spark.read.json
将RDD转换为具有模式的dataFrame。
data = [
{"name": "sam", "address":"uk"},
{"name":"jack" , "address":"aus", "occupation":"job"}
]
spark = SparkSession.builder.getOrCreate()
df = spark.read.json(sc.parallelize(data)).na.fill('')
df.show()
+-------+----+----------+
|address|name|occupation|
+-------+----+----------+
| uk| sam| |
| aus|jack| job|
+-------+----+----------+
答案 1 :(得分:1)
如果行的顺序不重要,则这是另一种方法:
from pyspark import SparkContext
sc = SparkContext()
df = sc.parallelize([
{"name":"jack" , "address":"aus", "occupation":"job"},
{"name": "sam", "address":"uk"}
]).toDF()
df = df.na.fill('')
df.show()
+-------+----+----------+
|address|name|occupation|
+-------+----+----------+
| aus|jack| job|
| uk| sam| |
+-------+----+----------+