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

如何用Pandas Groupby按组填充唯一值补全缺失值?

Pandas分组填充组内缺失值方案

原始数据

import pandas as pd
import numpy as np

df = pd.DataFrame({'value': [1, np.nan, np.nan, 2, 2, 2, 3, np.nan, 3], 'name': ['A','A', 'B','B','B','B', 'C','C','C']})

原始DataFrame输出:

name  value
0    A    1.0
1    A    NaN
2    B    NaN
3    B    2.0
4    B    2.0
5    B    2.0
6    C    3.0
7    C    NaN
8    C    3.0

需求说明

基于name列分组,用每组唯一的非NaN值填充组内所有缺失值(已知每组除NaN外仅存在一个唯一值)。

实现方法

方法1:groupby + transform 直接赋值

因为每组非NaN值唯一,使用first/max/min等聚合函数都能提取到该唯一值,再通过transform将值广播到组内所有行,自动覆盖NaN:

df['value'] = df.groupby('name')['value'].transform('first')

方法2:fillna 结合 groupby.transform

通过fillna指定填充值为分组后的唯一非NaN值:

df['value'] = df['value'].fillna(df.groupby('name')['value'].transform('max'))

处理后结果

name  value
0    A    1.0
1    A    1.0
2    B    2.0
3    B    2.0
4    B    2.0
5    B    2.0
6    C    3.0
7    C    3.0
8    C    3.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:27:13