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

Python pandas按Name分组求和Amount并条件统计Fruit次数的实现问题

问题解决:Pandas分组同时实现求和与条件计数

你原代码的问题在于只在aggfunc中指定了Amount列的求和逻辑,未对Fruit列配置条件计数的聚合规则,因此无法生成统计Apple出现次数的Count列。

示例数据构造(可直接运行验证)

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Name': ['Bob', 'Bob', 'Bill', 'Bill', 'Bill'],
    'Fruit': ['Apple', 'Orange', 'Apple', 'Orange', 'Apple'],
    'Amount': [5,7,4,8,3]
})

方案1:使用groupby+agg(更直观推荐)

res = df.groupby('Name', as_index=False).agg(
    Sum=('Amount', 'sum'),
    Count=('Fruit', lambda x: (x == 'Apple').sum())
)

方案2:调整pivot_table写法

res = pd.pivot_table(
    df,
    index='Name',
    aggfunc={
        'Amount': np.sum,
        'Fruit': lambda x: (x == 'Apple').sum()
    }
).rename(columns={'Amount': 'Sum', 'Fruit': 'Count'}).reset_index()

两种方案输出结果均符合预期:

NameSumCount
Bob121
Bill152

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:04