使用pysp从字典列创建一个数据框架

2024-04-26 23:10:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从pyspark中现有的数据帧创建一个新的数据帧。dataframe“df”包含一个名为“data”的列,它有多行字典,并且有一个schema作为字符串。而且每本字典的钥匙都不是固定。用于示例名称和地址是第一行字典的键,但其他行的键可能不同。下面是一个例子

........................................................
  data 
........................................................
 {"name": "sam", "address":"uk"}
........................................................
{"name":"jack" , "address":"aus", "occupation":"job"}
.........................................................

我如何转换成包含以下列的数据帧。在

^{pr2}$

Tags: 数据字符串name名称示例dataframedfdata
2条回答

如果行的顺序不重要,这是另一种方法:

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|          |
+   -+  +     +

data转换为RDD,然后使用spark.read.json将RDD转换为具有架构的数据帧。在

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|
+   -+  +     +

相关问题 更多 >