Python Polars中按条件用计算后的其他列值替换指定列
Polars实现指定条件下的列值替换
需求:当DataFrame中Y列的值为'v'时,将X列的对应值替换为Z列值乘以1.341再乘以15后转换为整数的结果。
对应你熟悉的Pandas实现:
df.loc[df["Y"] == "v", "X"] = ( df.loc[df["Y"] == "v", "Z"] * 1.341 * 15).astype(int)
在Polars中,基于你已掌握的pl.when().then().otherwise()逻辑,只需把then部分替换为对应的计算式即可,无需嵌套复杂结构,实现代码如下:
df = df.with_columns( pl.when(pl.col("Y") == "v") .then((pl.col("Z") * 1.341 * 15).cast(pl.Int32)) .otherwise(pl.col("X")) .alias("X") )
代码说明:
pl.when(pl.col("Y") == "v"):指定判断条件,即Y列值为'v'的行.then((pl.col("Z") * 1.341 * 15).cast(pl.Int32)):满足条件时,对Z列执行计算后转换为整数类型(Polars中用cast()替代Pandas的astype()).otherwise(pl.col("X")):不满足条件时保留X列原数值.alias("X"):将处理后的结果命名为原列名,实现原地替换(若要生成新列可修改别名)
内容的提问来源于stack exchange,提问作者Alessandro Togni
相关产品推荐
相关产品推荐

