【问题标题】:how to compare two pyspark dataframes?如何比较两个pyspark数据框?
【发布时间】:2021-10-30 07:31:05
【问题描述】:

我正在尝试比较两个 spark 数据帧以从两个数据帧中找到不匹配的值,但我只得到不匹配的 df1 值。我需要连接 df1 和 df2 的不匹配值。

df1 = spark.read.load("df1.csv", format = "csv", header = "True")
df2 = spark.read.load("df2.csv", format = "csv", header = "True")
sss = df2.subtract(df1)

=================== df1 和 df2 ===================

代码输出:

预期输出为

提前致谢。

【问题讨论】:

  • 列 col1、col2 和 col3 在预期输出中是相同的。为什么需要包含相同的列?

标签: python pyspark


【解决方案1】:

如果您的数据已编入索引(具有“id”列),您可以在“id”上加入 df2.subtract(df1) 和 df1.subtract(df2)

df1 = spark.createDataFrame([(1, 1, 1, 1, 1), 
                             (2, 2, 2, 2, 2), 
                             (3, 3, 3, 3, 3)], 
                             schema = ["id", "col1", "col2", "col3", "col4"])

df2 = spark.createDataFrame([(1, 1, 1, 1, 1), 
                             (2, 2, 2, 2, 3),
                             (3, 3, 3 , 3, 4)], 
                             schema = ["id", "col1", "col2", "col3", "col4"])

df_a = df1.subtract(df2)
df_b = df2.subtract(df1)
df = df_a.join(df_b, "id")

产生以下df

如果没有可用的索引,如果没有对匹配列的额外要求,可能无法获得预期输出。

【讨论】:

  • 谢谢安娜 k。它为我的数据提供了正确的结果,但我需要再添加一列来触发哪些列的值不匹配。
猜你喜欢
  • 2020-06-02
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多