scala - Spark:有条件地将 col1 值替换为 col2
问题描述
我有一个已加入旧数据和更新数据的数据框:
我想折叠此数据,因此只要 model_update 列中的非空值可用,它就会替换同一行中的模型列值。如何做到这一点?
数据框:
+----------------------------------------+-------+--------+-----------+------------+
|id |make |model |make_update|model_update|
+----------------------------------------+-------+--------+-----------+------------+
|1234 |Apple |iphone |null |iphone x |
|4567 |Apple |iphone |null |iphone 8 |
|7890 |Apple |iphone |null |null |
+----------------------------------------+-------+--------+-----------+------------+
理想结果:
+----------------------------------------+-------+---------+
|id |make |model |
+----------------------------------------+-------+---------|
|1234 |Apple |iphone x |
|4567 |Apple |iphone 8 |
|7890 |Apple |iphone |
+----------------------------------------+-------+---------+
解决方案
这是一个快速的解决方案:
val df2 = df1.withColumn("New_Model", when($"model_update".isNull ,Model)
.otherwise(model_update))
其中 df1 是您的原始数据框。
推荐阅读
- reactjs - 为什么在当前范围内使用与变量同名的道具会被视为阴影?
- node.js - Azure Bot:将此消息发送到您的 bot 时出错:HTTP 状态代码禁止访问
- javascript - 谷歌分析自定义维度不起作用
- c - 将int传递给scanf()时C中的分段错误?
- sql - 当每个对象可能有一个值列表时创建表
- salesforce - 如何在闪电组件中向对象数组添加更多数据
- dc.js - 许多饼图的过滤器列表并删除它们
- r - 使用具有多个条件的部分匹配对 df 进行子集
- jasper-reports - 我的 jasper ireport 中的 PDF 预览不可用
- c# - 如何包含多个策略