2016-10-20 19 views
1

はのは、私がデータフレームを持っているとしましょう:重複行

df = sqlContext.createDataFrame(
    [(1, 10, 21.0, 0), (3, 14, -23.0, 1)], ("x1", "x2", "x3", "x4")) 

df.show() 

## +---+---+-----+---+ 
## | x1| x2| x3| x4| 
## +---+---+-----+---+ 
## | 1| 10| 23.0| 5| 
## | 3| 14|-23.0| 0| 
## +---+---+-----+---+ 

行を「複製」およびそれらの重複でx4=1を設定し、持っている効率的な方法だろう何:

## +---+---+-----+---+ 
## | x1| x2| x3| x4| 
## +---+---+-----+---+ 
## | 1| 10| 23.0| 5| 
## | 1| 10| 23.0| 1| 
## | 3| 14|-23.0| 0| 
## | 3| 14|-23.0| 1| 
## +---+---+-----+---+ 

Apache PIGでは、アナログは簡単です:foreachを実行して生成する:

FLATTEN(TOBAG(1, x4)) AS x4 

pyspark.sql.functionsからあなたにすべての

答えて

2

のインポートに必要な機能をありがとう:

from pyspark.sql.functions import array, explode, lit 

と既存の列を置換:

df.withColumn("x4", explode(array(lit(1), df["x4"]))) 
+0

+1、これはDFに同じ行が追加されますが、どのような場合、私がしたいですn個の行を挿入します.nは、dfから別の列の値にすることができます – Mubin