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

Pandas DataFrame按Name分组求和Damage同时保留其余列的实现问题

Pandas按指定规则分组聚合实现方案

核心逻辑

通过groupby.agg()为不同字段配置专属聚合规则,一次操作即可完成所有字段处理并保留全部原有列。

代码实现

第一步:定义Job字段自定义聚合函数

# Job字段聚合规则:优先返回组内非0值,组内无非0值时返回0
def handle_job(series):
    non_zero_values = series[series != 0]
    return non_zero_values.iloc[0] if non_zero_values.shape[0] > 0 else 0

第二步:执行分组聚合

import pandas as pd

# 此处df替换为你自己的DataFrame对象
result_df = df.groupby(by="Name", as_index=False).agg(
    Damage=("Damage", "sum"),
    Ally=("Ally", "first"), # 字段固定为T,取组内第一个值即可
    EncId=("EncId", "first"), # 全表值相同,取组内第一个值即可
    Duration=("Duration", "max"), # 取组内最大值
    Job=("Job", handle_job)
    # 其他需要保留的列可在此处补充对应聚合规则,固定值类均可用first
)

补充说明

如果Job字段组内存在多个非0值,你可以根据实际需求调整handle_job函数的返回逻辑,比如要返回最大非0值可修改为return non_zero_values.max()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:09:01