2016-04-23 121 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()時)。

相關問題