使用Pandas进行聚合与分组索引:按年份汇总用户金额的问题
按年份对用户金额批量求和的解决方案
嗨,我懂你现在只能手动处理单一年份的金额求和有多繁琐——其实用pandas的分组功能就能一次性搞定所有年份的汇总,不用逐个年份重复写代码。
假设你的DataFrame结构如下(可根据实际列名调整):
比如你的数据大概是这样的:
| user_id | year | amount |
|---|---|---|
| 1 | 2020 | 100 |
| 1 | 2020 | 200 |
| 2 | 2021 | 150 |
| 2 | 2021 | 50 |
| 3 | 2022 | 300 |
一步到位的分组求和代码:
# 按用户ID和年份分组,对金额列求和 result_df = df.groupby(['user_id', 'year'])['amount'].sum().reset_index() # 可选:给求和后的列重命名,让结果更直观 result_df.rename(columns={'amount': 'total_amount'}, inplace=True)
代码解释:
groupby(['user_id', 'year']):告诉pandas同时按用户ID和年份进行分组,这样每个组就是同一个用户同一年的所有记录['amount'].sum():对每个分组里的金额列求和reset_index():把分组后的索引(user_id和year)转换为普通列,让结果和你预期的表格结构一致
如果你的年份是日期格式(比如datetime类型):
如果你的数据里没有直接的year列,而是有一个日期列(比如transaction_date),可以先提取年份再分组:
# 从日期列提取年份,生成新的year列 df['year'] = df['transaction_date'].dt.year # 再执行上面的分组求和逻辑 result_df = df.groupby(['user_id', 'year'])['amount'].sum().reset_index()
用这个方法,不管你有多少个年份,都能一次性完成所有用户的年度金额汇总,不用再单独处理每个年份啦。
内容的提问来源于stack exchange,提问作者yigitozmen
相关产品推荐
相关产品推荐

