Pyspark-如何复制/复制行?

Pyspark-如何复制/复制行?,pyspark,row,explode,Pyspark,Row,Explode,我需要从数据帧中“克隆”或“复制”/“复制”每一行 我什么也没发现,我只知道我需要使用explode 例如: ID - Name 1 John 2 Maria 3 Charles 输出: ID - Name 1 John 1 John 2 Maria 2 Maria 3 Charles 3 Charles 谢谢您可以使用数组重复和分解(Spark2.4+) 对于重复的: from pyspark.sql import f

我需要从数据帧中“克隆”或“复制”/“复制”每一行

我什么也没发现,我只知道我需要使用explode

例如:

ID - Name
1     John
2     Maria
3     Charles
输出:

ID - Name
1     John
1     John
2     Maria
2     Maria
3     Charles
3     Charles

谢谢

您可以使用
数组重复
分解
(Spark2.4+)

对于重复的

from pyspark.sql import functions as F
df.withColumn("Name", F.explode(F.array_repeat("Name",2)))
df.withColumn("Name", F.explode(F.array_repeat("Name",3)))
对于
一式三份

from pyspark.sql import functions as F
df.withColumn("Name", F.explode(F.array_repeat("Name",2)))
df.withColumn("Name", F.explode(F.array_repeat("Name",3)))

你为什么不把数据框本身加起来呢?嘿@Mohammad,你知道在给定条件下,行数是否可以相乘吗?例如,有一个支持列的数字是2,4,6,我想相应地分解成这些数字。你的spark版本是什么?并支持具有2,4,6含义的列,复制2次,4次,6次,对吗?这意味着我无法修复此参数2,4,6,它应该是读像df.withColumn(“Name”,F.explode(F.array_repeat(“Name”,F.col(“parameter”))这样的列的内容@thalesthales你检查过我的更新吗?。保持它动态的唯一方法是使用表达式,并发送参数的int值,如
df.withColumn(“Name”,F.explore(F.expr(“array_repeat(Name,int(parameter))”)”)
from pyspark.sql import functions as F
df.withColumn("Name", F.expr("""repeat(concat(Name,','),Support)"""))\
  .withColumn("Name", F.explode(F.expr("""split(substring(Name,1,length(Name)-1),',')"""))).show()