使用Pandas查找表中的值按组填充PySpark DataFrame中的NA

ikfrs5lh  于 2023-06-20  发布在  Spark
关注(0)|答案(1)|浏览(127)

我有一个PySpark DataFrame,在col2中有缺失值,我想根据col1中的值来进行估算。例如:

df
id    col1    col2
0      A       1
1      A      NA
2      B       2
3      B      NA
4      B       3

我想使用给定的Pandas查找表来填补这些缺失的值:

pdf_lookup
id    col1    col2
0      A       4
1      B       5

因此,期望的结果将是以下PySpark DataFrame:

id    col1    col2
0      A       1
1      A       4
2      B       2
3      B       5
4      B       3

最有效的方法是什么?可扩展的解决方案将是理想的,因为df可能非常大,具有多达数百列(即col3,...,col500),需要基于col1进行插补。任何建议将不胜感激!

k4emjkb1

k4emjkb11#

你可以先使用join,然后再使用coolce,只保留2列的非空值:

pdf_lookup = pdf_lookup.select(col("col1"), col("col2").alias("col2_tmp"))
df.join(pdf_lookup, ["col1"], "left").withColumn("col2", coalesce(col("col2"), col("col2_tmp"))).drop("col2_tmp").show()

相关问题