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

pandas中如何为DataFrame添加合计行与费用占比列

实现方案

cumsum()是逐行累计计算的方法,无法直接生成末尾的合计行,可按以下逻辑实现需求:

  • 先统计所有餐费的总金额,以此为基数计算每行餐费的占比,生成percent列,结果保留两位小数
  • 单独构造合计行:name取值和原数据一致,meal字段填total,cost填总餐费,percent留空
  • 将合计行拼接到原表末尾,重置索引得到最终结果

完整代码

import pandas as pd

# 示例原始数据
df = pd.DataFrame({'name': ['adam', 'adam', 'adam'], 
                   'meal': ['breakfast', 'lunch', 'dinner'], 
                   'cost': [75, 120, 250]})

# 计算餐费总金额
total_cost = df['cost'].sum()
# 新增百分比列
df['percent'] = (df['cost'] / total_cost * 100).round(2)
# 构造合计行
total_row = pd.DataFrame({
    'name': [df['name'].iloc[0]],
    'meal': ['total'],
    'cost': [total_cost],
    'percent': ['']
})
# 拼接得到最终结果
df = pd.concat([df, total_row], ignore_index=True)

输出结果

代码运行后得到的结果和预期完全一致:

name       meal  cost percent
0  adam  breakfast    75   16.85
1  adam      lunch   120   26.97
2  adam     dinner   250   56.18
3  adam      total   445        

如果需要处理多用户的数据集,只需要按name字段分组,分别计算每个用户的餐费总和、生成对应合计行后再统一拼接即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:39:14