Python中如何按指定列分组均值填充另一列的NaN缺失值
Pandas实现按分组均值填充列缺失值
你可以直接用pandas内置的分组变换功能完成需求,不需要写自定义循环,代码简洁且运行效率高。
实现步骤
- 导入数据处理依赖库
pandas和numpy(用于生成缺失值标识) - 按
Bedroom字段分组,计算每组内Bathroom字段的非缺失值均值,通过transform方法把均值映射回原表每一行 - 用映射得到的分组均值填充
Bathroom字段的NaN值
完整可运行代码
import pandas as pd import numpy as np # 构造提供的样例数据集 df = pd.DataFrame({ 'Bathroom': [1, 2, 1, 2, np.nan, np.nan], 'Bedroom': [1, 2, 2, 3, 2, 3] }) # 核心逻辑:生成分组均值对齐序列,填充缺失值 df['Bathroom'] = df['Bathroom'].fillna( df.groupby('Bedroom')['Bathroom'].transform('mean') )
结果验证
运行代码后输出的数据集如下,完全符合给定的填充规则:
| Bathroom | Bedroom |
|---|---|
| 1.0 | 1 |
| 2.0 | 2 |
| 1.0 | 2 |
| 2.0 | 3 |
| 1.5 | 2 |
| 2.0 | 3 |
补充说明
transform('mean')会自动排除每组内的NaN值计算均值,不需要额外手动过滤非缺失条目- 如果存在某组
Bathroom字段全为缺失值的场景,对应位置填充后仍为NaN,可以在上述代码后追加全局均值填充做兜底:# 全列缺失场景兜底填充 df['Bathroom'] = df['Bathroom'].fillna(df['Bathroom'].mean())
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

