首页 > 解决方案 > 使用不同的变量无条件地更新数据框的多个列值

问题描述

我有大约 10 列的数据框。我从这 10 列中选择了 4 列并清理了它们的值(通过调用一些外部 API 并使用它的响应)。我现在想创建新的数据框(因为无法更新旧的数据框)并使用其清理后的值(由 API 返回)更新这 4 列,并保持其他 6 列不变。

尝试探索 .na.replace 和 .withColumn 但它们都适用于列的某些条件。

val newdf = df.withColumn("col1", when(col("col1") === "XYZ", cleanedcol1)
      .otherwise(col("col1")));

val newdf = df.na.replace("col1", Map("col1" -> cleanedcol1))

第一个片段匹配col1value ,XYZ然后替换它。我想要无条件的改变。第二个实际上尝试"col1"col1列查找字符串,因此不会替换任何内容。

实现这一目标的最佳方法是什么?df 的来源是 Kafka,因此流量会很快。

标签: scaladataframe

解决方案


您可以使用 withCoulum 进行无条件更改,只需编写

val newdf = df.withColumn("col1", newColumnValue)

newColumnValue您要为该列设置的新值在哪里。


推荐阅读