【问题标题】:How to check the column values from different dataframes?如何检查来自不同数据框的列值?
【发布时间】:2020-09-03 02:29:34
【问题描述】:

我有两个 pyspark 数据框,我想检查第二列数据框中是否存在第一个数据框列值。如果第二个数据框列中不存在第一个数据框列值,我需要识别这些值并写入进入列表。有没有更好的方法来使用 pyspark 处理这种情况?感谢您的回复。

df[Name].show()
Java
Oracle
.NET

df1[Name].show()
Oracle
Scala
.NET
python

【问题讨论】:

  • 使用连接制作数据框。

标签: python apache-spark pyspark apache-spark-sql


【解决方案1】:

你可以使用左反连接。

PySpark -

df_diff = df.join(df1, df('Name') == df1('Name'), 'left_anti')

SQL

df.registerTempTable('df')
df1.registerTempTable('df1')
df_diff = spark.sql( 'select df.Name from df left anti join df1 on df.name = df1.name')

您也可以将左连接与 Where 子句一起使用

df_diff = df.join(df1, df('Name') == df1('Name'), 'left').filter("df1['Name'] is null")

最后,获取值

df_diff.show()

要使它成为一个列表,剩下要做的就是将所有值提取到一个 python 列表(我不确定你是希望它作为数据框还是 python 列表)。

【讨论】:

    【解决方案2】:
    a =[]
    for col in df[Name].columns:
        if col not in df1[Name].columns:
            a.append(col)
    

    【讨论】:

      猜你喜欢
      • 2020-08-31
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 2012-02-04
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多