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

如何在Polars DataFrame中将特定值替换为null?

在Polars DataFrame中将特定哨兵值替换为Null的方法

当然可以,Polars提供了多种灵活的方式将哨兵值(比如"_UNKNOWN")替换为真实的缺失值(null),以下是几种常用方案:

1. 单个列替换

针对某一列的特定哨兵值,直接使用replace方法将其映射为None(Polars会自动转换为对应数据类型的null):

import polars as pl

# 示例DataFrame
df = pl.DataFrame({
    "col1": ["a", "_UNKNOWN", "b", "_UNKNOWN"],
    "col2": [1, 999, 2, 999]
})

# 替换col1中的"_UNKNOWN"为null
df = df.with_columns(
    pl.col("col1").replace("_UNKNOWN", None)
)

2. 多列批量替换

如果多个列需要替换同一个哨兵值,可以通过列选择器批量处理:

# 替换指定列列表中的"_UNKNOWN"
df = df.with_columns(
    pl.col(["col1", "col3"]).replace("_UNKNOWN", None)
)

# 替换所有字符串类型列中的"_UNKNOWN"
df = df.with_columns(
    pl.col(pl.Utf8).replace("_UNKNOWN", None)
)

3. 不同列对应不同哨兵值

若不同列的哨兵值不同,使用when/then表达式精准处理:

df = df.with_columns(
    # col1替换"_UNKNOWN"
    pl.col("col1").when(pl.col("col1") == "_UNKNOWN").then(None).keep_name(),
    # col2替换999
    pl.col("col2").when(pl.col("col2") == 999).then(None).keep_name()
)

4. 全表替换指定值

如果整个DataFrame中所有出现的某个值都需要替换为null,直接调用DataFrame级别的replace方法:

# 全表替换"_UNKNOWN"为null
df = df.replace("_UNKNOWN", None)

替换完成后,可以用df.null_count()查看各列的缺失值数量,验证替换效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:01:07