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

Python DataFrame分组后按ColD=Blue条件计算ColC均值生成ColE

解决方案:分组筛选特定行计算均值并填充新列

方法1:临时筛选列实现(直观易懂)

先构造一个仅保留ColD="Blue"对应ColC值、其余为NaN的临时列,再按分组计算均值(均值计算会自动忽略NaN),最后用transform把结果映射到每一行:

# 创建临时筛选列,仅保留ColD为Blue的ColC值
df['ColC_filtered'] = df['ColC'].where(df['ColD'] == 'Blue')
# 分组计算均值并填充到ColE
df['ColE'] = df.groupby(['ColA', 'ColB'])['ColC_filtered'].transform('mean')
# 可选:删除临时列
df = df.drop(columns='ColC_filtered')

方法2:匿名函数直接筛选(简洁高效)

在transform中用匿名函数,针对每个分组的索引,筛选出ColD="Blue"的行再计算均值:

df['ColE'] = df.groupby(['ColA', 'ColB'])['ColC'].transform(
    lambda x: x[df.loc[x.index, 'ColD'] == 'Blue'].mean()
)

最终结果表

ColAColBColCColDColE
AType110Red20.0
AType120Blue20.0
AType210Blue20.0
AType210Red20.0
AType230Blue20.0
BType170Blue70.0
BType110Red70.0
BType219Yellow32.5
BType250Blue32.5
BType212Yellow32.5
BType215Blue32.5

说明

两种方法都能让每个ColA+ColB分组的所有行,统一填充该分组下ColD="Blue"的ColC均值;由于题目已确保每个分组至少有一行ColD="Blue",无需处理均值为NaN的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:20:20