我有这样的数据data = [[1.1, 1.2], [1.3, 1.4], [1.5, 1.6]]我想创建一个PySpark数据框
data = [[1.1, 1.2], [1.3, 1.4], [1.5, 1.6]]
我已经用过
dataframe = SQLContext.createDataFrame(data, ['features'])
但我总是得到
+--------+---+ |features| _2| +--------+---+ | 1.1|1.2| | 1.3|1.4| | 1.5|1.6| +--------+---+
我如何获得如下所示的结果?
+----------+ |features | +----------+ |[1.1, 1.2]| |[1.3, 1.4]| |[1.5, 1.6]| +----------+
我发现将参数createDataFrame()视为元组列表很有用,其中列表中的每个条目对应于DataFrame中的一行,而元组的每个元素对应于一列。
createDataFrame()
您可以通过将列表中的每个元素设为元组来获得所需的输出:
data = [([1.1, 1.2],), ([1.3, 1.4],), ([1.5, 1.6],)] dataframe = sqlCtx.createDataFrame(data, ['features']) dataframe.show() #+----------+ #| features| #+----------+ #|[1.1, 1.2]| #|[1.3, 1.4]| #|[1.5, 1.6]| #+----------+
或者,如果更改源很麻烦,则可以等效地执行以下操作:
data = [[1.1, 1.2], [1.3, 1.4], [1.5, 1.6]] dataframe = sqlCtx.createDataFrame(map(lambda x: (x, ), data), ['features']) dataframe.show() #+----------+ #| features| #+----------+ #|[1.1, 1.2]| #|[1.3, 1.4]| #|[1.5, 1.6]| #+----------+