scala - 使用不同的变量无条件地更新数据框的多个列值
问题描述
我有大约 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))
第一个片段匹配col1
value ,XYZ
然后替换它。我想要无条件的改变。第二个实际上尝试"col1"
为col1
列查找字符串,因此不会替换任何内容。
实现这一目标的最佳方法是什么?df 的来源是 Kafka,因此流量会很快。
解决方案
您可以使用 withCoulum 进行无条件更改,只需编写
val newdf = df.withColumn("col1", newColumnValue)
newColumnValue
您要为该列设置的新值在哪里。
推荐阅读
- hyperledger-fabric - 在 Windows 10 问题中构建 Hyper Ledger Node SDK Rest Server
- javascript - React - 无法从列表中加载图像
- c# - Windows 10 上的 Visual Studio 安装程序公司名称
- css - 我只想要 iPad 横向真实设备的媒体查询?
- sql - 如何将列转换为行
- cypress - 我的柏树断言测试失败,但仍显示绿色箭头
- r - 直接从二进制大对象 (BLOB) 读取数据
- python - 如何将全年每天 3 小时的数据导入 xarray
- elasticsearch - 使用 Elastic RestHighLevelClient 批量请求时出现 ConnectionClosedException
- java - 如何将局部变量提取到 IntelliJ 中的类变量?