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

Pandas groupby分组后如何将计算结果作为新列添加到每组所有行

解决方案

你可以通过以下两种方法实现需求:

方法1:沿用现有计算结果做合并

你已经得到的分组计算结果是带有stay_id、starttime多级索引的Series,直接将其和原表按分组字段合并即可:

# 先保存你已经计算得到的分组结果
grouped_res = df.groupby(['stay_id', 'starttime']).apply(helper)
# 重命名结果列后和原表左连接,自动匹配同分组的所有行
df = df.merge(grouped_res.rename('d_hour'), on=['stay_id', 'starttime'], how='left')

方法2:用transform一步添加新列(更简洁)

不需要单独计算分组结果再合并,groupby.transform会自动把分组计算的标量结果广播到分组内所有行,直接赋值为新列即可:

import pandas as pd

def helper(rows):
    # 可选:增加空值判断,避免分组无day==0行时报错
    day0_rows = rows[rows["day"] == 0]
    if day0_rows.empty:
        return pd.NA # 可自定义默认值
    min_dd = day0_rows["dd"].min()
    return day0_rows[day0_rows["dd"] == min_dd]["total"].iloc[0]

# 直接生成和原表行数一致的d_hour列
df["d_hour"] = df.groupby(['stay_id', 'starttime'])[['day','dd','total']].transform(helper)

两种方法最终得到的结果都和你给出的预期输出一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:45:03