如何在Polars DataFrame中按条件修改指定行的列值并保留原结构
在Polars DataFrame中修改满足条件的行并保留完整结构
要实现只修改特定条件的行、同时保留原DataFrame完整结构的需求,不用先筛选再合并,直接用Polars的条件表达式就能完成:
方法实现
import polars as pl # 初始化原DataFrame df = pl.DataFrame( { "a": [0, 1, 2, 3], "b": [0.5, 4, 10, 13], "c": ["foo", "foo", "foo", "foo"], } ) # 对满足条件的行修改列c的值 df_updated = df.with_columns( pl.when(pl.col("a") == 1) .then(pl.lit("baz")) # 满足条件时设置为"baz" .otherwise(pl.col("c")) # 不满足条件时保留原值 .alias("c") # 替换原列"c" ) print(df_updated)
输出结果
shape: (4, 3) ┌─────┬──────┬──────┐ │ a ┆ b ┆ c │ │ --- ┆ --- ┆ --- │ │ i64 ┆ f64 ┆ str │ ╞═════╪══════╪══════╡ │ 0 ┆ 0.5 ┆ foo │ │ 1 ┆ 4.0 ┆ baz │ │ 2 ┆ 10.0 ┆ foo │ │ 3 ┆ 13.0 ┆ foo │ └─────┴──────┴──────┘
补充说明
如果需要的是对字符串内容做替换(而非直接赋值固定值),可以把then里的pl.lit("baz")换成字符串替换逻辑:
df_updated = df.with_columns( pl.when(pl.col("a") == 1) .then(pl.col("c").str.replace("foo", "baz")) .otherwise(pl.col("c")) .alias("c") )
内容的提问来源于stack exchange,提问作者RCap107
相关产品推荐
相关产品推荐

