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

基于id分组众数的x1列缺失值高效填充方案问询

用分组众数高效填充DataFrame缺失值

这里有个高效的解决方案,借助Pandas的groupby+transform特性,只需要一次分组计算就能批量完成所有缺失值的填充,避免了逐个处理的低效操作:

完整实现代码

import pandas as pd
import numpy as np

# 示例DataFrame
df = pd.DataFrame({'id': [1, 1, 2, 3, 1, 1, 1, 1, 4, 5],
                   'x1': ['a', np.nan, 'b', 'c', 'e', 'e', 'e', 'f', 'g', 'h']})

# 定义函数:获取每组的第一个众数(处理多众数/全缺失情况)
def get_group_mode(x):
    mode_result = x.mode()
    # 若分组无有效值(全为NaN),返回NaN避免报错
    return mode_result.iloc[0] if not mode_result.empty else np.nan

# 填充缺失值:用对应id分组的众数替换x1的NaN
df['x1'] = df['x1'].fillna(df.groupby('id')['x1'].transform(get_group_mode))

运行结果

处理后的DataFrame中,id=1对应的缺失值会被替换为该组的众数e:

id x1
0   1  a
1   1  e
2   2  b
3   3  c
4   1  e
5   1  e
6   1  e
7   1  f
8   4  g
9   5  h

方案优势

你原来的方法需要逐个提取缺失记录的id,再单独计算对应分组的众数,这种方式会重复执行分组和统计操作,数据量越大计算成本越高。而本方案仅需一次groupby操作即可批量计算所有分组的众数,再通过transform自动将众数映射到对应id的每一行,效率提升显著。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:12:22