如何摆脱spark数据帧列值开始和结束时的引号?

时间:2017-05-04 09:31:34

标签: python apache-spark single-quotes

我将数据帧导出为csv格式。它的一些列数据类型已从vector更改为string。列值从 [0.350562388776,0.203056015074,-0.313145598397] 更改为'[0.350562388776,0.203056015074,-0.313145598397]'

我尝试将其转换为我使用的矢量 -

from pyspark.ml.linalg import Vectors, VectorUDT
from pyspark.sql.functions import udf
list_to_vector_udf = udf(lambda l: Vectors.dense(l), VectorUDT())
vectors = df.select(
list_to_vector_udf(df["result1"]).alias("res1"),
list_to_vector_udf(df["result2"]).alias("res2")
)

列的数据类型已从字符串更改为向量但由于我应用了vectorassembler,因此出现错误 ValueError:无法将字符串转换为float:[0.389866781754-0.180391363533-0.212950805169] 。 我搜索了它的解决方案,得到了这些错误的解决方案,但对我没什么用。

1 个答案:

答案 0 :(得分:0)

这通常不是一个好方法,但是尝试只是评估结果(结果是值得信赖的,对吗?)

>>> a = eval('[1,2,3'])
>>> print(a)
[1,2,3]

请注意,您可能以错误的方式使用此lib。