And*_*nte 2 python dataframe apache-spark apache-spark-sql pyspark
我有 2 个 pyspark 数据帧,我想检查一列的值是否存在于另一个数据帧的列中。
我只看到了如何过滤存在的值的解决方案(像这样),我需要做的是返回一列 true 或 false。
在 pandas 中,它会是这样的:
df_A["column1"].isin(df_B["column1"])
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:更干净的方法来做到这一点:
import pyspark.sql.functions as F
result = df1.join(df2.withColumn('flag', F.lit(True)), 'col1', 'left').fillna(False)
result.show()
+----+-----+
|col1| flag|
+----+-----+
| 0| true|
| 1| true|
| 2|false|
+----+-----+
Run Code Online (Sandbox Code Playgroud)
旧答案:
df1 = spark.createDataFrame(([0],[1],[2])).toDF('col1')
df2 = spark.createDataFrame(([0],[1],[3])).toDF('col1')
df1.join(df2, 'col1', 'semi') \
.distinct() \
.select('col1', F.lit(True).alias('flag')) \
.join(df1, 'col1', 'right') \
.fillna(False, 'flag') \
.show()
+----+-----+
|col1| flag|
+----+-----+
| 0| true|
| 1| true|
| 2|false|
+----+-----+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12656 次 |
| 最近记录: |