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

如何用Pandas按ID分组取前两条均值替换原值并填充feature列NaN

Pandas实现方案

完整代码

import pandas as pd
import numpy as np

# 1. 读取数据,此处可替换为你的文件路径
df = pd.read_csv('your_data.csv')
# 清理列名多余空格,避免匹配错误
df.columns = df.columns.str.strip()

# 2. 定义分组处理函数
def process_feature_group(group):
    feat_cols = ['feature1', 'feature2']
    # 提取两列均为非空的有效行
    valid_rows = group.dropna(subset=feat_cols)
    valid_cnt = len(valid_rows)
    
    if valid_cnt >= 2:
        # 取前两条有效值计算均值,替换整组对应列
        mean_val = valid_rows[feat_cols].head(2).mean()
        group[feat_cols] = mean_val
    elif valid_cnt == 1:
        # 仅1条有效值时前向填充
        group[feat_cols] = group[feat_cols].ffill()
    # 无有效值的场景默认保留原值,可按需新增逻辑
    return group

# 3. 按ID分组应用处理逻辑
df_result = df.groupby('ID', group_keys=False).apply(process_feature_group)

# 输出验证
print(df_result)

逻辑说明

  • 代码默认适配你提供的「feature1、feature2同步空值」的数据集结构,如果实际场景中两列空值不同步,可调整dropna的subset参数,或分别对两列单独统计有效行数计算填充值。
  • group_keys=False参数会保留原数据集的结构,不会将分组ID设为额外索引。
  • 计算均值时默认保留浮点型格式,如需统一整数格式可在赋值时添加.astype(int)方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:54:04