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|
+--------+----------+
我有两个数据框,一个来自具有以下字段的数据库:
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|
+--------+----------+