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

如何在Polars中按条件填充ID列的空值?

解决Polars中按条件填充ID列空值的问题

解决方案代码

import polars as pl

df = pl.DataFrame(
    {
        "ID": [None, "1", None, "1", None],
        "A": ["foo", "ham", "spam", "egg", "ham"],
        "L": ["A54", "A12", "B84", "C12", None],
        "G": ["X34", "C84", "G96", "L6", "C74"],
    }
)

# 获取ID列的唯一有效值
valid_id = df["ID"].drop_nulls().unique().item()

# 按条件更新ID列
result_df = df.with_columns(
    pl.when(
        pl.all_horizontal(pl.exclude("ID").is_not_null()) & pl.col("ID").is_null()
    ).then(valid_id).otherwise(pl.col("ID")).alias("ID")
)

print(result_df)

代码解释

  1. 提取唯一有效ID:通过drop_nulls()过滤ID列空值,unique()确认唯一有效值(符合题目中"有效值均为唯一值"的前提),最后用item()提取具体值。
  2. 条件判断与填充:
    • pl.all_horizontal(pl.exclude("ID").is_not_null()):检查当前行除ID外的所有列是否无空值,返回布尔值。
    • 结合pl.col("ID").is_null(),仅当「其他列无空值且ID为空」时,用唯一有效ID填充;其余情况保持原ID值不变。

输出结果

shape: (5, 4)
┌──────┬──────┬──────┬─────┐
│ ID   ┆ A    ┆ L    ┆ G   │
│ ---  ┆ ---  ┆ ---  ┆ --- │
│ str  ┆ str  ┆ str  ┆ str │
╞══════╪══════╪══════╪═════╡
│ 1    ┆ foo  ┆ A54  ┆ X34 │
│ 1    ┆ ham  ┆ A12  ┆ C84 │
│ 1    ┆ spam ┆ B84  ┆ G96 │
│ 1    ┆ egg  ┆ C12  ┆ L6  │
│ null ┆ ham  ┆ null ┆ C74 │
└──────┴──────┴──────┴─────┘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:39:40