如何按年度季度对pandas透视表分组聚合FICO区间余额
解决方案
首先确认你的透视表行索引base_ts是datetime类型,这是pandas做时间分组的前置要求,如果不是先做类型转换,之后直接用时间重采样接口resample按季度聚合即可,天然支持区分不同年份的季度,不需要手动写月份判断逻辑。
完整实现代码
import pandas as pd # 转换索引为日期时间类型(如果已经是datetime类型可以跳过这步) total_balance.index = pd.to_datetime(total_balance.index) # 按季度维度重采样,对所有FICO区间的余额求和 quarterly_total = total_balance.resample(rule='Q').sum() # 可选:把索引格式化为「年份年Q季度」的易读格式,比如2015年Q4、2016年Q1 quarterly_total.index = quarterly_total.index.to_period('Q').astype(str).str.replace('Q', '年Q')
样例数据运行结果
针对你给出的样例透视表,运行上述代码后得到的汇总结果如下:
| 季度 | 300-649 | 650-699 | 700-749 | 750-799 | 800-850 | invalid | missing |
|---|---|---|---|---|---|---|---|
| 2015年Q4 | 3000 | 3000 | 3000 | 3000 | 3000 | 3000 | 3000 |
| 2016年Q1 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 | 12000 |
补充说明
resample使用的Q频率默认季度划分规则为「1-3月Q1、4-6月Q2、7-9月Q3、10-12月Q4」,和你要求的规则完全一致,不需要额外自定义分组逻辑- 如果你不需要中文格式的季度标签,只需要
2015Q4这类标准格式,删掉最后一行索引格式化的代码即可,此时索引为季度周期类型,后续做时间序列计算更方便 - 聚合逻辑为对同一季度下所有月份的对应FICO区间余额做累加,自动按年份隔离季度数据,不会出现不同年份同季度数据混算的问题
内容的提问来源于stack exchange,提问作者aironia
相关产品推荐
相关产品推荐

