我有一个如下所示的数据框。尝试了 Join 和 isin 函数,但没有得到如下所示的预期输出。不知道我错过了什么。如果有人可以提供帮助,请感激。谢谢。
DF1:
姓名 | 等级 |
---|---|
汤姆 | A |
迈克 | B |
约翰 | C |
DF2:
已批准_成绩 | 描述 |
---|---|
A | 认可等级 |
预期输出:
姓名 | 等级 | 已批准 |
---|---|---|
汤姆 | A | 是的 |
迈克 | B | 没有 |
约翰 | C | 没有 |
请使用pyspark中的“join”连接表,然后使用条件过滤结果。检查下面的解决方案。
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, when
spark = SparkSession.builder.getOrCreate()
data1 = [('Tom', 'A'),
('Mike', 'B'),
('John', 'C')]
df1 = spark.createDataFrame(data1, ['Name', 'Grade'])
data2 = [('A', 'Approved grade')]
df2 = spark.createDataFrame(data2, ['Approved_Grades', 'Description'])
merged_df = df1.join(df2, df1.Grade == df2.Approved_Grades, 'left') \
.withColumn('Approved', when(col('Approved_Grades').isNull(), 'No').otherwise('Yes')) \
.drop('Approved_Grades', 'Description')
merged_df.show()
请使用上面的代码并尝试是否有效。谢谢