TypeError:ArrayType(DoubleType,true)无法接受对象u'..'

时间:2018-10-25 13:53:53

标签: python apache-spark pyspark

由于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'>

有什么解决方法吗?

1 个答案:

答案 0 :(得分:0)

您的数据似乎是字符串类型。

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

import ast

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

rows_li = ast.literal_eval(rows)

有关literal_eval的更多信息