2016-04-23 221 views
1

我在Scala中有一个名为dataList的2d列表,我想将它转换为Pandas DataFrame将Scala中的列表转换为Python列表或数据框

val dataList: List[List[Int]] = tempData.toList 

如果我想打印dataList,一切工作正常,并在Python对象的类型是

<class 'py4j.java_gateway.JavaObject'> 

据我知道,我必须使用py4j有机会获得在Python集合。不过,我想我必须使用嵌套循环访问dataList的每个元素,然后放入DataFrame。有没有更聪明的方法直接将其转换为DataFrame或python列表,然后DataFrame

我使用齐柏林0.5.5

+0

由于我使用齐柏林飞艇,是的! – MTT

+0

然后在问题的标签中添加'Apache-Spark',这个问题可能对未来的其他人有用,或者可能有人曾经用过这个问题。 –

+0

你是对的!完成。 – MTT

回答

2

如果您将您的斯卡拉列表以Java列表第一(使用转换器),PySpark应该能够自动将其转换为一个Python列表。

在斯卡拉细胞:

import scala.collection.JavaConverters._ 

// Sample of what I assume your "dataList" looks like 
val dataList: List[List[Int]] = List(List(1,2,3),List(4,5,6)) 
// Convert to java.util.List 
val javaDataList: java.util.List[java.util.List[Int]] = 
    dataList.map(_.asJava).asJava 
// Place in Zeppelin context for %pyspark cell access 
z.put("dataList", javaDataList) 

在一个单独的单元格的Python:

%pyspark 
# Read from Zeppelin context 
dataList = z.get("dataList") 
print dataList 

你也可以想象你的斯卡拉列表转换为(火花)据帧首先,手即到Python,然后调用“toPandas()”来获得Pandas DataFrame。我不会推荐它,因为你只是将数据并行化,然后再次并行化(当你调用toPandas()时)。

相关问题