Pyspark创建一个数组来存储数据帧的三个键



我想创建一个数组并保存数据帧中的三个字段然后读取该数组,以便存储在该数组中的代码不在另一个数据帧上。

df1
id; id1; code; date_create
1; 100; 50; 2021-10-10
2; 200; 60; 2021-10-10
3; 300; 70; 2021-10-10
4; 400; 80; 2021-10-10
5; 500; 90; 2021-10-10
df2
1; 100; 50; 2021-10-10
2; 200; 60; 2021-10-10
3; 300; 70; 2021-10-10
4; 400; 80; 2021-10-15
5; 500; 90; 2021-10-15
6; 600; 100; 2021-10-15
7; 700; 101; 2021-10-15

我想把它存储在一个数组中:

读取df2,其中date_create等于2021-10-15,并保存字段id,id1,代码

在读取数组并再次生成df1之后,但没有数组中的id、id1代码

或多或少像这样,下面的代码不正确更多的是一个想法

list = np.array (df1.select ("id", id1, code) .collect ())
for i in lista:
df1 = df1.filter (df1 ["id", id1, code]! = i)

然后我要做一个工会

df2.union (df1)

以避免重复问题。

如果有人能帮我,我将不胜感激。

result
id; id1; code; date_create
1; 100; 50; 2021-10-10
2; 200; 60; 2021-10-10
3; 300; 70; 2021-10-10
4; 400; 80; 2021-10-15
5; 500; 90; 2021-10-15
6; 600; 100; 2021-10-15
7; 700; 101; 2021-10-15

您可以进行反联接以消除重复,然后进行联合:

result = df1.join(df2, ['id', 'id1', 'code'], 'anti').union(df2)

最新更新