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

使用Pandas无需调用自定义函数为同条目新增平均价格列的方法

完全可以不用自定义函数实现,推荐使用pandas原生的向量化运算实现,性能远高于逐行apply的方案。

方案1:直接对汇总后的列做向量运算

这是最符合需求的方案,全程不需要自定义任何函数,直接替换你原来的自定义函数和apply代码即可,逻辑和你原有代码完全一致:

import pandas as pd

df = pd.DataFrame(
    {
        'Fruits': ['Apple', 'Apple', 'Apple', 'Orange', 'Banana', 'Orange'],
        'Price': [100, 300, 250, 300, 80, 150],
        'Amount': [ 2, 5,  5,  10, 10, 8]
    }
)

# 按水果分组汇总
df1 = df.groupby(['Fruits'],as_index=False).sum()
# 直接对两列做向量除法,无需自定义函数和逐行遍历
df1['Average'] = df1['Price'] / df1['Amount']
print(df1)

pandas的Series之间的运算默认是逐元素对齐执行的,不需要显式遍历每一行,不仅代码更简洁,处理大批量数据时的效率也比axis=1的apply操作高几个数量级。

方案2:分组聚合时直接一步生成结果

如果你不需要单独保留总售价、总销量的中间字段,也可以在分组聚合阶段直接计算出平均价:

df1 = df.groupby('Fruits', as_index=False).agg(
    Total_Price=('Price', 'sum'),
    Total_Amount=('Amount', 'sum'),
    Average=('Price', lambda x: x.sum() / df.loc[x.index, 'Amount'].sum())
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:54:02