Apache spark 合并spark dataframe中的两列以形成单列
我有一个带两列的Spark数据框;src_边和dest_边。我只想创建一个新的spark数据框,这样它就包含一个列id,其中的值来自src_edge和dest_edge 我想将df2创建为: 如果可能,我还希望创建没有重复值的df2。有人知道怎么做吗Apache spark 合并spark dataframe中的两列以形成单列,apache-spark,graph,pyspark,Apache Spark,Graph,Pyspark,我有一个带两列的Spark数据框;src_边和dest_边。我只想创建一个新的spark数据框,这样它就包含一个列id,其中的值来自src_edge和dest_edge 我想将df2创建为: 如果可能,我还希望创建没有重复值的df2。有人知道怎么做吗 id 1 2 3 使用array和explode创建一个新列,以合并并展平两列。然后,要删除重复项,请使用dropDuplicates: 使用array和explode创建一个新列,以合并并展平两列。然后,要删除重复项,请使用dropDu
id
1
2
3
使用array和explode创建一个新列,以合并并展平两列。然后,要删除重复项,请使用dropDuplicates:
使用array和explode创建一个新列,以合并并展平两列。然后,要删除重复项,请使用dropDuplicates:
更新
最简单的方法可能是选择每个列,合并它们,然后调用distinct:
从pyspark.sql.functions导入col
df2=df.selectcolsrc.aliasid.uniondf.selectcoldst.aliasid.distinct
df2.show
+--+
|身份证|
+--+
| 1|
| 3|
| 2|
+--+
您还可以通过外部联接来实现这一点:
df2=df.selectcolsrc.aliasid\
参加
df.selectcoldst.aliasid,
on=id,
如何=外部
\
不同的
更新
最简单的方法可能是选择每个列,合并它们,然后调用distinct:
从pyspark.sql.functions导入col
df2=df.selectcolsrc.aliasid.uniondf.selectcoldst.aliasid.distinct
df2.show
+--+
|身份证|
+--+
| 1|
| 3|
| 2|
+--+
您还可以通过外部联接来实现这一点:
df2=df.selectcolsrc.aliasid\
参加
df.selectcoldst.aliasid,
on=id,
如何=外部
\
不同的
id
1
1
2
3
id
1
2
3
from pyspark.sql.functions import array, explode
df2 = df.select(explode(array("src", "dst")).alias("id"))
.dropDuplicates()