You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何按某列类别聚合,填充另一列的空值

实现方案

提供三种最常用的工具实现方式,可根据你的使用场景选择:

Python(Pandas)实现

假设你的数据已读取为DataFrame对象df,对应列名为教育程度、薪资:

# 计算基础教育群体的平均薪资(默认自动排除空值)
basic_avg_salary = df[df['教育程度'] == '基础教育']['薪资'].mean()

# 仅填充基础教育群体的薪资空值
df.loc[(df['教育程度'] == '基础教育') & (df['薪资'].isna()), '薪资'] = basic_avg_salary

注意:两个过滤条件必须分别用括号包裹,避免Pandas运算优先级报错

SQL 实现

假设表名为user_salary,对应字段为education_level、salary,适配MySQL 8.0+、PostgreSQL、SQL Server等主流数据库:

UPDATE user_salary u
SET salary = (
    SELECT AVG(salary)
    FROM user_salary
    WHERE education_level = '基础教育' AND salary IS NOT NULL
)
WHERE u.education_level = '基础教育' AND u.salary IS NULL;

子查询中显式加salary IS NOT NULL是为了和Pandas的均值计算逻辑保持一致,避免空值参与运算拉低结果

Excel 实现

假设教育程度列为A列,薪资列为B列,首行为表头:

  • 找空白单元格计算基础教育平均薪资,公式为=AVERAGEIF(A:A,"基础教育",B:B),假设计算结果存在C1单元格
  • 选中B列整列,按Ctrl+G调出定位窗口,点击「定位条件」选择「空值」,确定后会选中所有薪资为空的单元格
  • 保持选中状态,输入公式=IF(A2="基础教育",$C$1,B2),按Ctrl+Enter批量填充所有选中的空值即可

内容的提问来源于stack exchange,提问作者Bruna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:06:02