栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用来自另一个数据框的新值更新pyspark数据框?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用来自另一个数据框的新值更新pyspark数据框?

这与用新值更新数据框列密切相关,除了您还想添加数据框B中的行。一种方法是首先执行链接的问题中概述的操作,然后将结果与数据框B合并并删除重复。

例如:

dfA.alias('a').join(dfB.alias('b'), on=['col_1'], how='left')    .select(        'col_1',        f.when( ~f.isnull(f.col('b.col_2')), f.col('b.col_2')        ).otherwise(f.col('a.col_2')).alias('col_2'),        'b.col_3'    )    .union(dfB)    .dropDuplicates()    .sort('col_1')    .show()#+-----+-----+-----+#|col_1|col_2|col_3|#+-----+-----+-----+#|    a|  wew|    1|#|    b|  eee| null|#|    c|  rer|    3|#|    d|  yyy|    2|#+-----+-----+-----+

如果您有很多要替换的列并且不想对它们全部进行硬编码,则可以更一般地使用列表推导:

cols_to_update = ['col_2']dfA.alias('a').join(dfB.alias('b'), on=['col_1'], how='left')    .select(        *[ ['col_1'] +  [     f.when(         ~f.isnull(f.col('b.{}'.format(c))),         f.col('b.{}'.format(c))     ).otherwise(f.col('a.{}'.format(c))).alias(c)     for c in cols_to_update ] +  ['b.col_3']        ]    )    .union(dfB)    .dropDuplicates()    .sort('col_1')    .show()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375196.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号