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

如何使用Pandas按月份和费用类别自动化汇总支出数据?

自动化汇总每月各费用类别总支出方案

核心思路

无需逐个指定费用列名,通过**排除前两列(Name、Month)**自动识别所有费用类别列,再按月份分组求和即可实现自动化汇总。

完整代码实现

import pandas as pd

# 创建示例数据集
data = {'Name': ['Tom', 'Nick','Jack', 'Tom', 'Nick','Jack', 'Tom', 'Nick','Jack'],
        'Month': ['01', '01', '01', '02', '02', '02', '03', '03', '03'],
        'Super':[52, 25, 125, 40, 35, 90, 42, 29, 88], 
       'travel':[32, 18, 41, 23, None, 45, 28, 21, 76], 
       'bar':  [24, 12, 38, 14, 9, None, 28, 9, 22]}

df = pd.DataFrame(data)

# 自动识别所有费用类别列(排除Name和Month)
# 若需保留原DataFrame中费用列的顺序,使用df.columns.drop(['Name', 'Month'])
expense_cols = df.columns.difference(['Name', 'Month'])

# 按月份分组,对费用列求和(自动忽略NaN值)
monthly_total = df.groupby('Month')[expense_cols].sum()

# 输出结果
print(monthly_total)

代码说明

  1. 自动识别费用列:

    • df.columns.difference(['Name', 'Month']):返回除Name、Month外的所有列,无论费用类别有多少个(比如你实际的22个),都能自动适配,无需手动列名。
    • 若需要保持费用列与原DataFrame一致的顺序,替换为df.columns.drop(['Name', 'Month'])即可。
  2. 分组求和:

    • groupby('Month'):按月份对数据分组。
    • .sum():对每个分组内的费用列求和,自动忽略数据中的None(即pandas中的NaN值),不影响总和计算。

示例输出

Super  bar  travel
Month                    
01       202   74      91
02       165   23      68
03       159   59     125

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:55:11