如何检查来自不同数据框的列值?

Posted

技术标签:

【中文标题】如何检查来自不同数据框的列值?【英文标题】: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

【问题讨论】:

使用连接制作数据框。 【参考方案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)

【讨论】:

以上是关于如何检查来自不同数据框的列值?的主要内容,如果未能解决你的问题,请参考以下文章

如果数据框列值匹配字典键,检查不同的列是不是匹配字典值

如何计算grafana / postgres中不同记录的列值之间的差异

如何选择 sparkR 数据框的列值?

如何在 Oracle 数据库中获取更多列值以及不同的列?

根据第三列值在 bigquery 中选择两个不同的列

如何有条件地在条形图上的条形图上显示数据框的不同列值?