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

如何用分组df_train的统计值填充另一分组df_test的缺失值

解决方案

实现代码

你原有写法的问题是给fillna传入了包含全部分组中位数的序列,无法和当前分组的索引匹配,调整transform内的逻辑,取当前分组对应的中位数即可:

# 基于groupby的实现
df_test['col_2'] = df_test.groupby('col_1')['col_2'].transform(
    lambda x: x.fillna(values_used_in_df_train[x.name])
)

原理解释

  • groupby('col_1')会将df_test按照col_1的取值切分为A、B、C三个独立的分组
  • 每个分组传入transform的lambda函数时,x.name就是当前分组对应的col_1取值(比如A组的x.name就是'A')
  • 用values_used_in_df_train[x.name]拿到训练集计算好的当前分组对应的中位数,仅用这一个值填充当前分组内的所有NaN,即可完成预期的填充逻辑

验证输出

运行后df_test的结果和预期完全一致:

col_1  col_2
0      A    3.0
1      A    2.5
2      A    1.0
3      A    2.0
4      B    2.0
5      C    1.0
6      C    1.0
7      B    3.0
8      B    2.0
9      B    2.0
10     C    1.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 16:36:04