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

如何按user_id分组用c列均值原地填充a列NaN值

问题:按分组的另一列均值填充NaN值(原地操作)

需求说明

数据集的a列存在NaN值,需按user_id分组,用每组c列的均值填充a列的NaN值,且需进行原地操作以适配大规模数据集。

初始数据集代码

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [0, np.nan, np.nan], 'user_id': [1, 2, 2], 'c': [3, 7, 7]})

print(df)

期望结果

df = pd.DataFrame({'a': [0, 7, 7], 'user_id': [1, 2, 2], 'c': [3, 7, 7]})
    
print(df)

尝试的代码及问题

执行以下代码后,a列仍存在NaN值:

df['a'].fillna(df.groupby('user_id')['a'].transform('mean'), inplace=True)

print(df)

问题原因

你之前的代码是计算每组a列的均值,但user_id=2的分组中a列全为NaN,计算出的均值也是NaN,填充后自然还是NaN。需求是用**c列的均值**来填充,而非a列自身的均值。

解决方案

修改分组计算的列为c,同时保持原地操作:

# 计算每组c列的均值,生成与原数据同长度的填充序列
fill_values = df.groupby('user_id')['c'].transform('mean')
# 原地填充a列的NaN值
df['a'].fillna(fill_values, inplace=True)

print(df)

执行后即可得到期望结果:

a  user_id  c
0  0        1  3
1  7        2  7
2  7        2  7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:50:28