Pandas使用mask和df.where时如何对符合条件的值执行乘法替换
实现方案
你可以通过以下两种常用方法实现需求:
方法1:布尔索引直接赋值(最简单直观)
直接对符合mask条件的单元格执行乘法运算赋值即可:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame([[0.0, 0.0], [3.0, 0.0]]) mask = (df != 0.0) # 符合条件的数值乘0.5 df[mask] *= 0.5
方法2:使用mask方法实现链式调用
如果你需要链式操作不修改原始DataFrame,可以用pandas自带的mask方法(和where逻辑相反,条件为True时替换为指定值):
import pandas as pd df = pd.DataFrame([[0.0, 0.0], [3.0, 0.0]]) mask = (df != 0.0) # 链式操作生成新DataFrame df = df.mask(mask, df * 0.5)
两种方法执行后得到的结果都符合你的预期:
0 1 0 0.0 0.0 1 1.5 0.0
内容的提问来源于stack exchange,提问作者8-Bit Borges
相关产品推荐
相关产品推荐

