2016-10-25 2 views
0

Ich gehe durch die Dokumentation pySpark 1.6.2, um meine Daten in einen einzigen Datenrahmen zusammenzuführen.Zusammenführen von Listen in einem einzigen pySpark Datenrahmen

Ich habe eine Liste von 19 Einzelteilen (Listenname: Größen):

[9, 78, 13, 3, 57, 60, 66, 32, 24, 1, 2, 15, 2, 2, 76, 79, 100, 73, 4] 

und eine 2D-Liste mit 19 nicht gleicher Länge Unterlisten (Listenname: data):

[[a,b,c],[d,e,f,g,h,i,j].......[x,y,z,a,f]] 

I Ich versuche, einen Datenrahmen zu erstellen, der wie folgt aussieht:

Aber ich kann einen Weg nicht finden, das zu tun.

Ich habe bereits durch die Liste iteriert und ich könnte die beiden Spalten nach jeder Iteration anhängen. Aber ich finde es schwierig, einen Weg zu finden, einen Datenrahmen zu erstellen und ihn Schritt für Schritt zu füllen.

Dies ist mein Code:

schema = StructType([StructField("name", StringType(), True), StructField("size", IntegerType(), True)]) 
dataframe = sqlContext.createDataFrame([],schema) 

for i in range(len(data)): 
    sizes.append(len(data[i])) 
    t = sqlContext.DataFrame([[data[i], sizes[i]]], 
         columns=['name', 'size']) 
    dataframe = dataframe.append(t, ignore_index=True) 

dataframe.show() 

aber es gibt mir dies:

+----+----+ 
|name|size| 
+----+----+ 
+----+----+ 

Antwort

1

Es gibt eine einfache Möglichkeit, dies mit der zip() Funktion zu tun. Wenn Sie das tun:

t = zip(data, sizes) 

Sie erhalten eine Liste von Tupeln, einen für jedes Paar:

[(['a', 'b', 'c'], 9), 
(['d', 'e', 'f', 'g', 'h', 'i', 'j'], 78), 
    ... 
(['x', 'y', 'z', 'a', 'f'], 4)] 

Jetzt müssen Sie nur noch den Datenrahmen erstellen mit der Liste von Tupeln:

dataframe = sqlContext.createDataFrame(t,schema) 
+0

vielen dank! Es funktioniert perfekt – Kratos

Verwandte Themen