2016-10-25 6 views
0

データを単一のデータフレームにマージするには、pySpark 1.6.2のドキュメントを参照しています。単一のpySparkデータフレームにリストをマージする

Iは19の項目(リスト名:サイズ)のリストを持っている

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

及び19と同じではない長さのサブリスト(リスト名:データ)を含む2Dリスト

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

Iは

 name     size 
0  [a,b,c]     9 
1  [d,e,f,g,h,i,j]   78 
2  ........     ... 
.  ........     ... 
.  ........     ... 
18 [x,y,z,a,f]    4 

しかし、私はそれを行う方法を見つけることができません。

私はすでにリストを反復しており、各反復の後に2つの列を追加することができます。 しかし、Dataframeを作成して段階的に記入する方法を見つけるのは難しいです。

これは私のコードです:

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() 

が、それはこの私を返します。

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

答えて

1

このジッパーを使用して()関数を行う簡単な方法があります。そうした場合:

dataframe = sqlContext.createDataFrame(t,schema) 

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

は今、あなただけのタプルのリストを使用してデータフレームを作成する必要があります。

t = zip(data, sizes) 

あなたは、各ペアのタプルのリスト、1を持っています

+0

ありがとう!それは完全に動作します – Kratos

関連する問題