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

Pandas Series计算后转列表如何保留对应日期索引

问题背景

调用fred.get_series('GDPC1')获取的GDPC1序列是pandas Series对象,自带日期索引,索引与值一一对应。原实现逻辑用于计算季度GDP的年化环比增长率,但最终生成的普通列表仅存储了计算得到的增长率数值,丢失了匹配的日期索引。
原实现代码:

rgdp = fred.get_series('GDPC1')
fgdp=rgdp
rlistgdp=[] 
for a in range(len(rgdp)):
    rgdp2=((rgdp.iloc[a]/rgdp.iloc[a-1])**4-1) * 100
    rlistgdp.append(rgdp2)
rlistgdp

参考截图:
Series Dataframe结构
Series转List结果

实现方法

优先推荐使用pandas原生时序方法计算,既不会丢失索引,还能规避原循环的逻辑bug(原循环从索引0开始遍历,a=0时a-1=-1会取序列最后一个值作为除数,导致第一期增长率计算错误)。

方法1:原生pandas实现(推荐)

用pct_change()直接计算环比增速,计算结果会自动保留原日期索引,无需手动遍历:

rgdp = fred.get_series('GDPC1')
# 计算季度年化环比增长率,索引与原序列完全对应
rgdp_annual_growth = (rgdp.pct_change() + 1) ** 4 * 100 - 100

# 如果需要列表格式存储(日期+对应增长率),直接转成元组列表即可
rlistgdp = list(rgdp_annual_growth.items())

计算得到的rgdp_annual_growth本身就是带日期索引的Series,可直接用于后续时序分析、绘图、按日期筛选等操作;转成的列表每个元素都是(日期时间, 增长率值)的元组,不会丢失索引对应关系。

方法2:保留循环写法改造

如果需要沿用手写循环的逻辑,在追加元素时同时把对应日期索引和计算值一起存入列表即可,注意遍历从索引1开始,避免第一期计算错误:

rgdp = fred.get_series('GDPC1')
rlistgdp = []
# 从索引1开始遍历,第一期不存在前值,无有效增长率
for a in range(1, len(rgdp)):
    current_date = rgdp.index[a]
    growth = ((rgdp.iloc[a] / rgdp.iloc[a-1]) ** 4 - 1) * 100
    rlistgdp.append( (current_date, growth) )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:21:14