我的df是这样的:
df1 =
AA BB CC DD
1 X Y Z
2 M N O
3 P Q R
我还有另一个df,比如:
df2 =
BB CC DD
G K O
H L P
I M Q
我想为df1的‘aa’列的每个不同值复制df2的所有列和行,并获得结果df为:
df =
AA BB CC DD
1 X Y Z
1 G K O
1 H L P
1 I M Q
2 M N O
2 G K O
2 H L P
2 I M Q
3 P Q R
3 G K O
3 H L P
3 I M Q
我现在所做的是:
AAs = df1.select("AA").distinct().rdd.flatMap(lambda x: x).collect()
out= []
for i in AAs:
dff = df1.filter(col('AA')==i)
temp_df = (df1.orderBy(rand())
.withColumn('AA', lit(i))
)
out.append(temp_df)
df = reduce(DataFrame.unionAll, out)
这花费了极长的时间并且使集群失效,因为这些是模拟的数据帧,实际的数据帧的维度相当大.有没有什么让人兴奋的方式呢?先谢谢你.