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

Python pandas:查找分组重复类型并替换为均值的实现疑问

解决方案:替换重复type的count为分组均值

你已经成功筛选出了每个sample下重复出现的type,接下来只需要几步就能完成均值替换的需求,咱们一步步来:

1. 简化思路:无需提前筛选,一步完成替换

其实你可以跳过提前筛选non_uniq的步骤,直接用groupby+transform的组合,自动识别重复分组并替换均值,代码更简洁高效:

# 按sample和type分组,对count列做转换:如果分组长度>1(重复出现)就取均值,否则保留原值
df["count"] = df.groupby(["sample", "type"])["count"].transform(
    lambda x: x.mean() if len(x) > 1 else x.iloc[0]
)

2. 分步拆解(对应你已有的筛选逻辑)

如果你想沿用自己先筛选重复分组的思路,也可以按以下步骤完成:

步骤1:提取需要替换的(sample, type)分组

从你已得到的non_uniq中提取重复的分组对:

# 获取所有需要替换的(sample, type)组合
target_groups = non_uniq.index.tolist()

步骤2:计算目标分组的count均值

针对这些分组计算均值:

# 计算目标分组的均值,得到多级索引的Series
group_means = df.groupby(["sample", "type"])["count"].mean().loc[target_groups]

步骤3:替换原DataFrame的对应值

通过apply匹配分组并替换:

df["count"] = df.apply(
    lambda row: group_means.loc[(row["sample"], row["type"])] 
    if (row["sample"], row["type"]) in target_groups 
    else row["count"],
    axis=1
)

验证输出

无论用哪种方法,最终都会得到你预期的结果:

sampletypecount
sample1red6
sample1green3
sample2red2
sample2green6
sample3red4
sample3blue5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:05