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
相关产品推荐
相关产品推荐

