python—如何通过pyspark中的列向另一个Dataframe中的Dataframe添加行

aij0ehis  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(279)

我有两个df,我想把第二个df中的行放到第一个df中。但我只想在cid列中的值不在第一行时添加这些行。

df1
x  y  z  cid
4  8  1  1
7  5  6  2
7  3  5  3

df2
x  y  z  cid
8  4  5  1
1  2  9  2
8  6  4  3
4  5  4  4

result:
x  y  z  cid
4  8  1  1
7  5  6  2
7  3  5  3
4  5  4  4
daolsyd0

daolsyd01#

你可以试试下面的代码。

from pyspark.sql.functions import *

# Create DataFrame df1

df1 = spark.createDataFrame([(4,8,1,1), (7,5,6,2), (7,3,5,3)], ["x", "y", "z", "cid"])

# Create DataFrame df2

df2 = spark.createDataFrame([(8,4,5,1), (1,2,9,2), (8,6,4,3), (4,5,4,4)], ["x", "y", "z", "cid"])

# Get the values from cid column from df1

col1 = df1.select(collect_set("cid")).collect()[0][0]

# Filter the dataframe df2 where cid values present in df2 but not in df1.

df3 = df2.filter(~df2["cid"].isin(col1))

# Union df1 and df3.

df4 = df1.union(df3)
df4.show()

//输出

+---+---+---+---+
|  x|  y|  z|cid|
+---+---+---+---+
|  4|  8|  1|  1|
|  7|  5|  6|  2|
|  7|  3|  5|  3|
|  4|  5|  4|  4|
+---+---+---+---+

我希望这有帮助。

相关问题