如何在Pandas DataFrame中填充缺失值并同步设置标记列?
解决方案:同步填充缺失值并标记
要实现仅当估算值非空时,填充原列缺失值并同步设置标记,可以通过精准的布尔掩码定位需要处理的行,一次性完成两个操作:
步骤1:生成筛选掩码
先创建布尔序列,筛选出同时满足以下两个条件的行:
- 原
volume列的值为缺失值(NaN) - 对应位置的估算值
imputed_vol不为缺失值
# 生成目标行的掩码 mask = df_orig['volume'].isna() & ~imputed_vol.isna()
步骤2:同步更新列值
用掩码直接定位目标行,同时更新volume和is_imputed列:
# 填充缺失的volume值 df_orig.loc[mask, 'volume'] = imputed_vol[mask] # 将对应行的标记设为1 df_orig.loc[mask, 'is_imputed'] = 1
验证结果
执行后查看处理后的DataFrame:
print(df_orig)
输出结果:
cust_id period volume is_imputed 0 1 1 1.0 0 1 1 2 2.0 0 2 1 3 3.0 1 3 1 4 4.0 0 4 1 5 5.0 0 5 1 6 6.0 0 6 2 1 7.0 0 7 2 2 NaN 0 8 2 3 9.0 0 9 2 4 NaN 0 10 2 5 11.0 0 11 2 6 NaN 0
可以看到,只有第2行(原volume缺失且imputed_vol有有效值3)被填充,同时is_imputed设为1;其他原volume缺失但imputed_vol为空的行,保持原样未处理。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

