在满足某些条件时,我正在尝试用另一个DataFrame
更新。
combine_first
pandas
中的DataFrame
函数运行良好。 Spark中是否有等效方法可以有效地更新DataFrame
?
答案 0 :(得分:0)
没有严格的等效项,但是如果您有一个公用密钥,则可以加入并合并:
from pyspark.sql.functions import coalesce, col, isnan, when
keys = ["index"]
df1 = pd.DataFrame([[1, np.nan]])
df2 = pd.DataFrame([[3, 4]])
sdf1 = spark.createDataFrame(df1.reset_index()).alias("df1")
sdf2 = spark.createDataFrame(df2.reset_index()).alias("df2")
def first_of(c1, c2):
return coalesce(when(~isnan(c1), c1), when(~isnan(c2), c2))
sdf1.join(sdf2, keys, "fullouter").select(keys + [
first_of(sdf1[c], sdf2[c]).alias(c) for c in sdf1.columns if c not in keys
]).show()
# +-----+---+---+
# |index| 0| 1|
# +-----+---+---+
# | 0| 1|4.0|
# +-----+---+---+