Pyspark 中的比较数据框

Comparative dataframe in Pyspark

我有两个数据框,一个来自具有以下字段的数据库:

name id
bakarery 010203040000150
store 010203040000160
market 010203040000180
hospital 010203040000190
bakery 010203040000200

我需要比较另一个数据框才能更新 ID:

name id
bakarery 1020304050
store 010203040000160
market 010203040000180
hospital 3040506070
bakery 010203040000200

我只需要使用我需要更新的 ID 创建第三个数据框,查看名称,如果该名称更新了 ID,那么我将创建该数据框。

我该怎么做?

预期输出:

name id
bakarery 1020304050
hospital 3040506070
d = {'bakery':'010203040000150','store':'010203040000160'}
import pandas as pd
df1=pd.DataFrame(data=d,index=[0])
d1={'bakery':'1020304050','store':'010203040000160'}
df2=pd.DataFrame(data=d1,index=[0])
df3=df1==df2
df4=df2.mask(~df3).fillna(df2)
df4

bakery  store
0   1020304050  010203040000160

上面的代码是针对一个小样本执行的,但它应该可以完成工作。

假设第一个是 df1,第二个是 df2

df2.join(df1, on="name").where(df1["id"] != df2["id"]).show()

+--------+----------+---------------+                                           
|    name|        id|             id|
+--------+----------+---------------+
|bakarery|1020304050|010203040000150|
|hospital|3040506070|010203040000190|
+--------+----------+---------------+

或者也 :

df2.subtract(df1).show()
+--------+----------+                                                           
|    name|        id|
+--------+----------+
|bakarery|1020304050|
|hospital|3040506070|
+--------+----------+