Pyspark-如何复制/复制行?
我需要从数据帧中“克隆”或“复制”/“复制”每一行 我什么也没发现,我只知道我需要使用explode 例如: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
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()