【发布时间】:2019-04-03 22:58:32
【问题描述】:
我有一个数据框(在 Pyspark 中),其中一个行值作为字典:
df.show()
它看起来像:
+----+---+-----------------------------+
|name|age|info |
+----+---+-----------------------------+
|rob |26 |{color: red, car: volkswagen}|
|evan|25 |{color: blue, car: mazda} |
+----+---+-----------------------------+
基于cmets给予更多:
df.printSchema()
类型是字符串
root
|-- name: string (nullable = true)
|-- age: string (nullable = true)
|-- dict: string (nullable = true)
是否可以从字典中获取键(颜色和汽车)并将它们设为数据框中的列,并将值作为这些列的行?
预期结果:
+----+---+-----------------------------+
|name|age|color |car |
+----+---+-----------------------------+
|rob |26 |red |volkswagen |
|evan|25 |blue |mazda |
+----+---+-----------------------------+
我不知道我必须使用 df.withColumn() 并以某种方式遍历字典以选择每个字典,然后从中创建一列?到目前为止,我已经尝试找到一些答案,但大多数人使用的是 Pandas,而不是 Spark,所以我不确定是否可以应用相同的逻辑。
【问题讨论】:
-
如果是
json,这是一个骗子:Pyspark: explode json in column to multiple columns -
@robromo 这不是 pyspark 的友好字符串格式。除非您可以修改源数据,否则您可能必须定义一个
udf来解析它
标签: python apache-spark dictionary dataframe pyspark