繁体   English   中英

如何从Spark中的两个数据帧获取不匹配的列

[英]How to get unmatched column from two dataframe in spark

我有两个数据帧df1df2 ,我只想结果中不匹配的列。 我尝试使用SQL做,但是SQL返回的所有列都不是一个。

df1 

col1|col2|col3
a     b    c
1     2    3

df2
col1|col2|col3
a     b    e
1     2    3

我想要的是它是否可以返回

df3
col3

是否可以在pyspark中做,还是我必须通过从两个数据框中选择每一列然后进行比较来进行比较?

如果您需要做的就是比较两个数据框之间的列名,那么我建议如下。

df3 = ## Create empty pyspark dataframe
for name_1, name_2 in zip(df1.schema.names, df2.schema.names):
    if name_1 != name_2:
         df3[name_2] = df2.name_2

您实际上并没有指定要从哪个数据框中显示列。 下面的解决方案将向您显示两个数据框在同一行级别上的区别。 假设在您的dfs中,之前没有null。

val df11 = df1.withColumn("id", row_number().over(Window.orderBy("col1")))
val df22 = df2.withColumn("id", row_number().over(Window.orderBy("col1")))
val df_join = df11.join(df22.selectExpr("col1 as col11", "col2 as col22", "col3 as col33", "id"), Seq("id"), "inner")
df_join.select(when($"col1" === $"col11", null).otherwise(col("col1")), when($"col2" === $"col22", null).otherwise(col("col2")), when($"col3" === $"col33", null).otherwise(col("col3"))).show

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM