比较两个数据帧并显示不同的数据
compare two dataframes and display the data that are different
我有两个数据框,我想比较两列的值并显示不同的值,例如:比较这个 Table 1
A
B
C
D
O1
2
E1
2
O1
3
E1
1
O1
2
E1
0
O1
5
E2
2
O1
2
E2
3
O1
2
E2
2
O1
5
E2
1
O2
8
E1
2
O2
8
E1
0
O2
0
E1
1
O2
2
E1
4
O2
9
E1
2
O2
2
E2
1
O2
9
E2
4
O2
2
E2
2
用这个 table 2
A
B
C
D
O1
2
E1
2
O1
2
E2
3
O2
2
E1
4
O2
9
E2
4
我试过了
cond= [table1.A == table2.A, table1.C == table2.C, table1.D == table2.D]
join = table1.join(table2,cond,"leftsemi")
因为里面有很多数据,我不知道如何检查我得到的结果是否正确
从一个数据帧创建一个元组列表
check_list = list(df2.apply(tuple, axis=1))
并用它来与其他人进行比较
df1 =df1[~df1.apply(tuple, axis=1).isin(check_list)]
由于您的数据框具有相同的架构,您可以使用 subtract
df1
df1 = spark.createDataFrame([
(1, 2, 3, 4),
(5, 6, 7, 8),
], ['a', 'b', 'c', 'd'])
+---+---+---+---+
| a| b| c| d|
+---+---+---+---+
| 1| 2| 3| 4|
| 5| 6| 7| 8|
+---+---+---+---+
df2
df2 = spark.createDataFrame([
(5, 6, 7, 8),
], ['a', 'b', 'c', 'd'])
+---+---+---+---+
| a| b| c| d|
+---+---+---+---+
| 5| 6| 7| 8|
+---+---+---+---+
subtract
获取 df1
中存在但 df2
中不存在的数据
df1.subtract(df2).show()
+---+---+---+---+
| a| b| c| d|
+---+---+---+---+
| 1| 2| 3| 4|
+---+---+---+---+
我有两个数据框,我想比较两列的值并显示不同的值,例如:比较这个 Table 1
A | B | C | D |
---|---|---|---|
O1 | 2 | E1 | 2 |
O1 | 3 | E1 | 1 |
O1 | 2 | E1 | 0 |
O1 | 5 | E2 | 2 |
O1 | 2 | E2 | 3 |
O1 | 2 | E2 | 2 |
O1 | 5 | E2 | 1 |
O2 | 8 | E1 | 2 |
O2 | 8 | E1 | 0 |
O2 | 0 | E1 | 1 |
O2 | 2 | E1 | 4 |
O2 | 9 | E1 | 2 |
O2 | 2 | E2 | 1 |
O2 | 9 | E2 | 4 |
O2 | 2 | E2 | 2 |
用这个 table 2
A | B | C | D |
---|---|---|---|
O1 | 2 | E1 | 2 |
O1 | 2 | E2 | 3 |
O2 | 2 | E1 | 4 |
O2 | 9 | E2 | 4 |
我试过了
cond= [table1.A == table2.A, table1.C == table2.C, table1.D == table2.D]
join = table1.join(table2,cond,"leftsemi")
因为里面有很多数据,我不知道如何检查我得到的结果是否正确
从一个数据帧创建一个元组列表
check_list = list(df2.apply(tuple, axis=1))
并用它来与其他人进行比较
df1 =df1[~df1.apply(tuple, axis=1).isin(check_list)]
由于您的数据框具有相同的架构,您可以使用 subtract
df1
df1 = spark.createDataFrame([
(1, 2, 3, 4),
(5, 6, 7, 8),
], ['a', 'b', 'c', 'd'])
+---+---+---+---+
| a| b| c| d|
+---+---+---+---+
| 1| 2| 3| 4|
| 5| 6| 7| 8|
+---+---+---+---+
df2
df2 = spark.createDataFrame([
(5, 6, 7, 8),
], ['a', 'b', 'c', 'd'])
+---+---+---+---+
| a| b| c| d|
+---+---+---+---+
| 5| 6| 7| 8|
+---+---+---+---+
subtract
获取 df1
中存在但 df2
中不存在的数据
df1.subtract(df2).show()
+---+---+---+---+
| a| b| c| d|
+---+---+---+---+
| 1| 2| 3| 4|
+---+---+---+---+