You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Notebooks:如何用另一列的值替换DataFrame中的空值

解决Kotlin DataFrame中替换指定列空值并保留所有列的问题

针对你的需求,有几种简洁的方法可以实现仅替换name列的null值为age列的值,同时保留所有原有列:

方法1:使用fillNulls的正确语法

Kotlin DataFrame的fillNulls方法支持直接指定目标列,然后通过with传入填充逻辑,这里可以直接引用age列的值:

// 类型安全的列定义(推荐,避免字符串索引的错误)
val name by column<String?>()
val age by column<Int>()

val df = dataFrameOf(name, age)(
    "Alice", 15,
    "Bob", 20,
    null, 100
)

// 填充name列的null值为age列对应的值
val result = df.fillNulls(name).with { age }

如果不想提前定义列,也可以用字符串索引的方式:

val result = df.fillNulls("name").with { it["age"] }

方法2:使用mutate更新列

mutate方法可以在保留所有列的前提下,更新指定列的内容,这里用withDefault指定空值的默认值:

val result = df.mutate { name.withDefault { age } }

方法3:使用update直接修改列

update方法专门用于修改已有列,逻辑更直观:

val result = df.update(name) { it ?: age }

为什么你原来的代码无法运行?

你之前写的df.fillNulls { it["name"] }.with { it["age"] }错误在于,fillNulls的lambda参数不是行对象,而是用于指定要填充的列的选择器,正确的用法是直接传入列(或列名),而不是通过it["name"]返回列。

内容的提问来源于stack exchange,提问作者Soid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:31:13