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

如何在Pandas DataFrame中新增匹配ID与Category分组special值的新列

方案1:使用映射字典实现(性能更优,适合大数据量)

# 提取所有special行,构建(ID, Category)到对应Value的映射
special_mapping = df[df["Description"].eq("special")].set_index(["ID", "Category"])["Value"].to_dict()
# 按行匹配映射生成新列
df["special_value"] = df.apply(lambda row: special_mapping[(row["ID"], row["Category"])], axis=1)

方案2:使用groupby + transform实现(逻辑更直观,适合小数据量)

如果同一个分组内存在多个special行需要取平均值,可以直接调整聚合逻辑:

df["special_value"] = df.groupby(["ID", "Category"])["Value"].transform(
    lambda group_val: group_val[df.loc[group_val.index, "Description"].eq("special")].mean()
)

补充说明

你之前的代码失效大概率是因为分组后部分组内没有special行导致的空值传播问题,以上两种方案都兼容分组内无special行的场景(无对应值时返回NaN)。如果需要对无special值的分组填充默认值,可以在生成列后链式调用fillna(默认值)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:54:01