由于coordinates,我无法创建DataFrame。此字段不适合架构类型ArrayType(DoubleType())

my_schema = StructType(
        [
            StructField('alarm_id', StringType()),
            StructField('coordinates',ArrayType(DoubleType()))
        ])

df = spark.createDataFrame(rows, my_schema)


我收到此错误:

TypeError: ArrayType(DoubleType,true) can not accept object u'[[[1.7594273000000102, 41.82814869999999], [1.7594281999999908, 41.828104700000004]]]' in type <type 'unicode'>


有什么解决方法吗?

最佳答案

看来您的数据是字符串类型。

您可以使用ast lib使其成为列表。

import ast

rows = '[[[1.7594273000000102, 41.82814869999999], [1.7594281999999908, 41.828104700000004]]]'

rows_li = ast.literal_eval(rows)


有关literal_eval的更多信息

09-30 18:22