如何检查来自不同数据框的列值?
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)
【讨论】:
以上是关于如何检查来自不同数据框的列值?的主要内容,如果未能解决你的问题,请参考以下文章