如何将模型预测的缺失值列表/序列填充至原DataFrame对应列?
如何用模型预测的列表填充DataFrame的对应缺失值
嘿,这个场景我太熟悉了!pd.Series.fillna()确实只支持填充单一值、字典或者特定方法,但要把顺序匹配的预测值列表精准填入对应缺失位置,其实有个非常直接的解决方案——直接定位缺失值的索引位置,然后赋值就行。
具体步骤示例
假设我们有这样一个带缺失值的DataFrame,以及模型预测好的缺失值列表:
import pandas as pd import numpy as np # 构造示例数据 df = pd.DataFrame({ 'feature1': [10, np.nan, 30, np.nan, 50], 'feature2': [np.nan, 25, np.nan, 45, 55] }) # 模型预测的feature1缺失值,顺序和df中feature1的缺失位置完全匹配 predicted_values = [20, 40]
接下来只需要两步就能完成填充:
- 找到目标列中所有缺失值的索引
- 通过索引定位,把预测值列表赋值进去
代码实现:
# 获取feature1列缺失值的索引 missing_idx = df[df['feature1'].isna()].index # 给这些位置赋值预测值 df.loc[missing_idx, 'feature1'] = predicted_values
验证结果
执行完后打印DataFrame,就能看到缺失值已经被精准填充:
print(df) # 输出结果: # feature1 feature2 # 0 10.0 NaN # 1 20.0 25.0 # 2 30.0 NaN # 3 40.0 45.0 # 4 50.0 55.0
为什么这个方法可行?
因为你已经确保了预测列表的长度和缺失值数量一致,且顺序完全匹配缺失值出现的顺序,所以通过loc直接定位索引赋值时,pandas会自动按顺序将列表中的值对应到每个缺失位置上,这是最高效也最直观的方式。
内容的提问来源于stack exchange,提问作者Hieu Tran
相关产品推荐
相关产品推荐

