基于布尔掩码按对应列设置Pandas DataFrame值的实现
解决方法:根据B列空值掩码替换A列对应值
嘿,这个需求用Pandas的掩码操作就能轻松搞定,下面是完整的实现步骤和代码:
完整代码示例
import pandas as pd import numpy as np # 构建原始DataFrame df = pd.DataFrame({ 'A_1': [1, 2, 3], 'A_2': [4, 5, 6], 'B_1': ['y', 'n', np.nan], 'B_2': ['n', np.nan, np.nan] }) # 生成空值掩码:B列空值位置标记为True mask = df[['B_1', 'B_2']].isnull() # 用掩码替换A列对应位置的值为999 df[['A_1', 'A_2']] = df[['A_1', 'A_2']].mask(mask, 999) print(df)
代码细节解释
- 生成掩码:使用
isnull()方法获取B_1和B_2的空值位置,得到一个布尔矩阵——空值所在的位置为True,非空位置为False,这个矩阵就是我们用来定位替换位置的掩码。 - 执行替换:调用
mask()方法,当掩码为True时,将A_1、A_2对应位置的值替换为999;掩码为False的位置则保留原始值,完美匹配你的需求。
运行后得到的目标DataFrame
A_1 A_2 B_1 B_2 0 1 4 y n 1 2 999 n NaN 2 999 999 NaN NaN
内容的提问来源于stack exchange,提问作者toto_tico
相关产品推荐
相关产品推荐

