【发布时间】:2020-10-04 23:14:50
【问题描述】:
我有以下数据框,我想分解值列,以便每个值都在单独的列中:
id | values
-----------------------
1 | '[[532,969020406,89],[216,969100125,23],[169,39356140000,72],[399,14407358500,188],[377,13761937166.6667,24]]'
2 | '[[532,969020406,89]]'
请注意,值列下的列表可以有不同的长度,并且它们是字符串数据类型。
所需的表格应如下所示:
id | v11 | v12 | v13 | v21 | v22...
--------------------------------------
1 | 532 | 969020406 | 89 | 216 | 969100125...
2 | 532 | 969020406 | 89 | Null | Null...
我尝试指定架构并使用 from_json 方法创建数组然后分解它,但我遇到了问题,即任何架构似乎都不适合我的数据
json_schema = types.StructType([types.StructField('array', types.StructType([ \
types.StructField("v1",types.StringType(),True), \
types.StructField("v2",types.StringType(),True), \
types.StructField("v3",types.StringType(),True)
]))])
json_schema = types.ArrayType(types.StructType([ \
types.StructField("v1",types.StringType(),True), \
types.StructField("v2",types.StringType(),True), \
types.StructField("v3",types.StringType(),True)
]))
json_schema = types.ArrayType(types.ArrayType(types.IntegerType()))
df.select('id', F.from_json('values', schema=json_schema)).show()
程序只返回 Null 值或空数组:[,,]
我还收到以下错误:StructType can not accept object '[' in type
Pyspark 推断的输入数据架构:
root
|-- id: integer (nullable = true)
|-- values: string (nullable = true)
任何帮助将不胜感激。
【问题讨论】:
-
能否请您添加输入数据的架构,例如
df.printSchema()的输出为您的原始数据?
标签: apache-spark pyspark