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

Pandas按分组条件赋值生成新列的更优实现方案咨询

实现方案

你可以直接通过Pandas的groupby+transform组合实现需求,无需创建临时表,单行代码即可完成:

针对第一个场景(C列等于0的条件)

代码如下:

df['new_D'] = df.groupby(['A', 'B'])['D'].transform(lambda g: g[df.loc[g.index, 'C'] == 0].iloc[0])

针对第二个验证场景(C列等于'bar'的条件)

仅需要修改transform内的过滤条件即可:

df['new_D'] = df.groupby(['A', 'B'])['D'].transform(lambda g: g[df.loc[g.index, 'C'] == 'bar'].iloc[0])

可选:异常兼容处理

如果存在部分A、B分组下没有符合C列条件的行,你可以扩展逻辑增加默认值兜底,避免索引报错:

# 无匹配时填充pd.NA,你也可以替换为其他默认值比如-1
df['new_D'] = df.groupby(['A', 'B'])['D'].transform(
    lambda g: g[df.loc[g.index, 'C'] == 'bar'].iloc[0] if any(df.loc[g.index, 'C'] == 'bar') else pd.NA
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:15:02