gpt4 book ai didi

apache-spark - Spark : Replace missing values with values from another column

转载 作者:行者123 更新时间:2023-12-03 23:38:13 24 4
gpt4 key购买 nike

假设您有一个包含一些空值的 Spark 数据帧,并且您想用另一列的值替换一列的值(如果存在)。在 Python/Pandas 中,您可以使用 fillna() 函数很好地完成此操作:

df = spark.createDataFrame([('a', 'b', 'c'),(None,'e', 'f'),(None,None,'i')], ['c1','c2','c3'])
DF = df.toPandas()
DF['c1'].fillna(DF['c2']).fillna(DF['c3'])

如何使用 Pyspark 做到这一点?

最佳答案

您需要使用 合并 功能 :

cDf = spark.createDataFrame([(None, None), (1, None), (None, 2)], ("a", "b"))
cDF.show()
# +----+----+
# | a| b|
# +----+----+
# |null|null|
# | 1|null|
# |null| 2|
# +----+----+

cDf.select(coalesce(cDf["a"], cDf["b"])).show()
# +--------------+
# |coalesce(a, b)|
# +--------------+
# | null|
# | 1|
# | 2|
# +--------------+

cDf.select('*', coalesce(cDf["a"], lit(0.0))).show()
# +----+----+----------------+
# | a| b|coalesce(a, 0.0)|
# +----+----+----------------+
# |null|null| 0.0|
# | 1|null| 1.0|
# |null| 2| 0.0|
# +----+----+----------------+

您也可以申请 coalesce在多列上:
cDf.select(coalesce(cDf["a"], cDf["b"], lit(0))).show()
# ...

此示例取自 pyspark.sql API documentation .

关于apache-spark - Spark : Replace missing values with values from another column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42142357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com