我试图比较具有相同列的两个表,然后返回冲突的列。例如:表一:
<表类>
emp_id
emp_name
tbody><<tr>1 约翰 2玛丽 表类>
combined_df = pd.concat([df, df2])
print(combined_df[combined_df.duplicated()])
输出:
emp_id emp_name
0 1 John
或者,因为我不太确定你在问什么;
print(combined_df[~combined_df.duplicated()])
...
emp_id emp_name
0 1 John
1 2 Mary
1 2 Karen
2 3 Steve
print(combined_df[~combined_df.duplicated(keep=False)])
...
emp_id emp_name
1 2 Mary
1 2 Karen
2 3 Steve
您可以像前面那样使用emp id连接表。然后使用where else子句检查是否存在冲突。假设加入后的colname为:emp_id,emp_name_1和emp_name_2
final_df= df.withColumn("conflict_names", when(col("emp_name_1")!=col("emp_name_2"), col("emp_name_2")).otherwise(lit(None).cast(StringType())))
您的最后一个过滤条件不正确df = df.filter((df.emp_name1 = df.emp_name2))
。应该是
df = df.filter((df.name1 != df.name2))
+---+-----+-----+
| id|name1|name2|
+---+-----+-----+
| 2| Mary|Karen|
+---+-----+-----+