Pandas基于字典映射利用df1布尔值更新df2列值的实现方法
Pandas实现方案
核心逻辑是遍历映射字典,匹配df1中值为True的行位置,批量修改df2对应列的对应行值为False:
完整实现代码
import pandas as pd # 初始数据(你已有的部分可以直接复用) df1 = pd.DataFrame(data={'a': [True, False, False], 'b': [False, True, False]}, index=pd.Series([1, 2, 3], name='index')) df2 = pd.DataFrame(data={'w': [True, False, False], 'x': [False, True, False], 'y': [True, True, True], 'z': [True, False, True]}, index=pd.Series([1, 2, 3], name='index')) dic = {'a': ['w', 'x'], 'b': ['y', 'z']} # 核心处理逻辑 for df1_col, target_df2_cols in dic.items(): # 取df1当前列值为True的行掩码,加reindex保证索引对齐 true_rows_mask = df1[df1_col].reindex(df2.index, fill_value=False) # 批量修改df2对应位置为False df2.loc[true_rows_mask, target_df2_cols] = False
运行结果验证
输出处理后的df2即可得到预期结果:
| index | w | x | y | z |
|---|---|---|---|---|
| 1 | False | False | True | True |
| 2 | False | True | False | False |
| 3 | False | False | True | True |
补充说明
- 该方案使用Pandas原生向量化操作,即使数据量较大也能保持较高运行效率
- 代码中加入的
reindex逻辑,即使df1和df2索引不完全对齐也不会报错,缺失的索引位默认不修改df2的值
内容的提问来源于stack exchange,提问作者bltSandwich21
相关产品推荐
相关产品推荐

