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

Pandas如何按规则将df2值为1的元素替换为df1对应位置的值

Pandas 双DataFrame按掩码规则替换生成新表

规则说明

以行列索引对齐的df1(原值表)、df2(0/1掩码表)为基础生成df3:

  • 同坐标下df2值为1时,df3取df1对应位置的元素
  • 同坐标下df2值为0时,df3对应位置保留0

实现代码

采用pandas原生向量化运算实现,无手写遍历,执行效率最高:

# 若两个表行列索引存在不一致,先执行对齐操作,索引完全对齐可跳过
df1, df2 = df1.align(df2, fill_value=0)

# 一行代码生成目标DataFrame
df3 = df1.where(df2.eq(1), 0)

结果匹配说明

上述代码运行结果完全符合给出的样例预期:

  • 第一行值为abcde0000
  • 第二行值为abcd0e000
  • 第三行值为abcd00e00
  • 其余行均按统一规则自动生成,无需额外处理

注意:不建议使用iterrows/itertuples逐行逐列遍历的方式实现,万级以上数据量时,遍历写法的运行效率会比向量化实现低1~2个数量级。

内容的提问来源于stack exchange,提问作者Mert Açikel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:06:26