Pandas中如何依据另一列筛选条件填充指定列的缺失值
按车辆类型分组填充行驶里程缺失值
你需要先筛选出全新车样本计算对应行驶里程的均值,再精准匹配全新车的缺失行完成填充,注意你提供的复现示例中全新车的取值为'New',和描述中的'Brand New'文本存在差异,实际使用时替换为你数据集里的真实取值即可。
实现代码(仅填充全新车缺失值,完全匹配需求)
import pandas as pd import numpy as np # 加载/构造你的数据集 df = pd.DataFrame({'Car type': ['New','Used','New','New','New','Used','New','New'], 'Distance':[20,2222,34,np.nan,np.nan,np.nan,50,10]}) # 计算全新车组的行驶里程均值 new_car_distance_mean = df.loc[df['Car type'] == 'New', 'Distance'].mean() # 定位所有「车辆类型为全新车、且行驶里程为缺失值」的行,用计算出的均值填充 df.loc[(df['Car type'] == 'New') & (df['Distance'].isna()), 'Distance'] = new_car_distance_mean
运行结果
填充后的数据表如下,全新车的缺失值被替换为全新车组的里程均值28.5,二手车的缺失值保持未填充状态:
Car type Distance 0 New 20.0 1 Used 2222.0 2 New 34.0 3 New 28.5 4 New 28.5 5 Used NaN 6 New 50.0 7 New 10.0
扩展:全分组自动填充
如果后续你需要同时给二手车的缺失值填充二手车组的里程均值,不需要逐组手动计算,直接用分组变换的写法即可一步完成:
# 按车辆类型分组,用每组自身的里程均值填充组内缺失值 df['Distance'] = df.groupby('Car type')['Distance'].transform(lambda col: col.fillna(col.mean()))
内容的提问来源于stack exchange,提问作者Abdul
相关产品推荐
相关产品推荐

