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

如何对大型DataFrame中相同id/用户的缺失值用同组有效数据填充

实现方案

你可以通过按用户维度分组填充的方式实现需求,无需使用merge操作,不会新增列,对多列、大数据量的场景适配性很高:

import pandas as pd
import numpy as np

# 构造原始DataFrame
data = [{'a':2,'b': 2, 'c':3},{'b': 2, 'c':np.nan}, {'a': 10, 'b': 20, 'c': 30}, {'a': 10, 'b': np.nan, 'c': np.nan}]
df = pd.DataFrame(data, index =['John', 'John', 'Mike' ,'Mike'])

# 核心逻辑:按用户(索引)分组,每组内取对应列的第一个有效值填充所有空值
df = df.groupby(df.index).transform('first')

补充说明

  • 上述写法性能最优,适合确认同一个用户的每列都至少存在一个有效值、且同用户同列的有效值唯一的场景,处理数十万行规模的数据集都无性能压力
  • 如果同用户的有效值可能出现在任意行,没有固定顺序,可以用更通用的填充写法:
    df = df.groupby(df.index).apply(lambda x: x.ffill().bfill()).reset_index(level=0, drop=True)
    
  • 如果你的用户标识是单独存储在列中而非索引,只需将groupby(df.index)修改为groupby('用户列的列名')即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:09:02