Pyspark 检查一个列中的值是否存在于另一个数据框的列中

问题描述 投票:0回答:1

我正在尝试解决一个问题,我有两个具有以下详细信息的 pyspark 数据框:

df1
| value |
| ----- |
| the   |
| quick |
| brown |
| fox   |
| brown |


df2
| value  |
| ------ |
| brown  |
| fox    |
| brown  |

我需要输出一个新标志来检查

df1.value
中的值是否存在于
df2.value 

output
 | value | flag |
 | ----- |----- |
 | the   |  0   |
 | quick |  0   |
 | brown |  1   |
 | fox   |  1   | 
 | brown |  1   |
dataframe pyspark
1个回答
0
投票
(
    df1
    .join(df2.withColumn("flag",F.lit(1)).distinct(), on="value", how="left_outer")
    .fillna(0)
)

输出:

|value|flag|
+-----+----+
|  fox|   1|
|  the|   0|
|brown|   1|
|brown|   1|
|quick|   0|
+-----+----+

没有连接的选项:

df1.withColumn(
    "flag",
    F.col('value').isin(list(df2.distinct().toPandas()['value'])).cast('int')
    )
© www.soinside.com 2019 - 2024. All rights reserved.