如何在Pandas中精准修改指定行列的NaN值(线性回归填充)
解决DataFrame中用预测值填充指定索引NaN的问题
你之前的写法无效,核心原因是链式索引(df.loc[index_1]['feature_1'])返回的是原数据的副本,赋值操作只会修改副本,不会影响原DataFrame。下面是两种直接修改原数据的可行方法:
方法1:直接使用.loc的行列定位赋值
这是最直接的方式,通过df.loc[行索引, 列名]直接定位到原DataFrame的目标位置,赋值后会直接修改原数据:
单个缺失值的情况
如果只有一个索引index_1和对应的预测值predicted_feature_1:
df.loc[index_1, 'feature_1'] = predicted_feature_1
多个缺失值的情况
如果是一组索引数组nan_indices和对应的预测值数组nan_values_predicted(两者长度一致,索引和预测值一一对应):
df.loc[nan_indices, 'feature_1'] = nan_values_predicted
方法2:使用Series.update()方法
先创建一个以缺失值索引为索引、预测值为值的Series,再用update方法替换原列中的对应值:
import pandas as pd # 创建对应索引的Series pred_series = pd.Series(nan_values_predicted, index=nan_indices) # 更新原DataFrame的feature_1列 df['feature_1'].update(pred_series)
这个方法的好处是只会替换feature_1列中索引匹配的位置,不会影响其他非缺失值。
内容的提问来源于stack exchange,提问作者Luka Savic
相关产品推荐
相关产品推荐

