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

如何基于type与State分组后,分组price列nan不足3个时对缺失值进行填充

问题分析与正确实现

你现有代码的问题主要有3点:

  • lambda表达式语法错误:关键词lambda和参数x之间缺少空格,且Python三元表达式必须补全else分支才能正常运行
  • 逻辑判断写反:原需求是判断分组内NaN的数量小于3,你写的x.count()统计的是分组内非空值的数量,和需求不符
  • groupby对象不能直接赋值,且transform处理单列时不需要额外加axis=1参数

完整可运行代码

import pandas as pd
import numpy as np

# 构造示例DataFrame,可替换为你自己的数据集
df_daily = pd.DataFrame({
    'type': ['CHR', 'CHR', 'Kia', 'Kia', 'Kia', 'Kia'],
    'state': ['NSW', 'VIC', 'NSW', 'NSW', 'NSW', 'VIC'],
    'price': [1.2, np.nan, 2, np.nan, np.nan, np.nan]
})

# 核心实现逻辑
df_daily['price'] = df_daily.groupby(['type', 'state'])['price'].transform(
    lambda x: x.fillna(x.mean()) if x.isna().sum() < 3 else x
)

print(df_daily)

代码说明

  • 用groupby(['type', 'state'])完成两列联合分组,直接对price列做transform转换,若你的数据集州列名是大写State,同步修改分组参数即可
  • x.isna().sum()统计当前分组内price列的NaN数量,符合需求的判断条件
  • 三元表达式补全else分支,当NaN数量大于等于3时直接返回原列数据,保留NaN值
  • 转换后的结果直接赋值给原DataFrame的price列即可完成修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:57:04