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

如何根据另一个DataFrame的布尔值将DataFrame中的值置零

问题

假设有两个尺寸完全相同的DataFrame:

  • 数值型DataFrame:
d1 = {'values1': [1, 1,2,2], 'values2': [10, 50,200,100]}
df1 = pd.DataFrame(data=d1)
  • 布尔型DataFrame:
d2 = {'boolean1': [True, False,True,True], 'boolean2': [False, False,False,True]}
df2 = pd.DataFrame(data=d2)

需要实现的需求是:将df1中对应df2里值为True的位置替换为0,最终期望得到的结果如下:

r = {'values1': [0, 1,0,0], 'values2': [10, 50,200,0]}
result = pd.DataFrame(data=r)

解法1:直接通过布尔索引赋值

利用Pandas的布尔索引特性,直接定位df2中True对应的位置,将df1的这些位置设为0:

df1[df2] = 0

执行这段代码后,原df1会被直接修改为目标结果。

解法2:使用where方法生成新DataFrame

如果不想修改原df1,可以用where方法保留df2为False的位置的值,其余替换为0,返回新的DataFrame:

result = df1.where(~df2, 0)

~df2表示对布尔值取反,即保留df2中False对应的df1值,其他位置替换为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:15:55