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

如何将带日期索引的Pandas Series转为含日期与值的列表?

如何将statsmodels分解的趋势序列转为日期+数值的嵌套列表

嘿,这个需求很好解决!你已经通过seasonal_decompose拿到了带日期索引的趋势Series,要转成你想要的[['日期字符串', 数值], ...]格式,有两种简单的实现方式:

首先先确认你的趋势Series生成代码(结合你已有的预处理步骤):

import pandas as pd
import statsmodels.api as sm

# 你的数据预处理代码
df = pd.read_csv("test_forecast/upload_data.csv") 
df["date"] = pd.to_datetime(df["date"], format="%Y-%m-%d") 
df.set_index("date", inplace=True) 
df = df.resample('D').mean().interpolate(method='linear', axis=0).fillna(0)

# 获取带日期索引的趋势Series
trend_series = sm.tsa.seasonal_decompose(df["upload"]).trend.interpolate(method='linear', axis=0).fillna(0)

方法1:遍历Series的索引与值

直接通过items()方法遍历趋势Series的每一对日期索引和数值,将datetime类型的日期转为你需要的字符串格式后,添加到结果列表中:

result_list = []
for date, value in trend_series.items():
    # 将datetime对象转为"YYYY-MM-DD"格式的字符串
    date_str = date.strftime("%Y-%m-%d")
    result_list.append([date_str, value])

方法2:转为DataFrame后批量处理

这种方法更简洁,适合数据量较大的场景:

  1. 先将趋势Series转为带日期列的DataFrame
  2. 将日期列转为指定格式的字符串
  3. 直接将DataFrame转为嵌套列表
# 重置索引,把日期从索引转为列
trend_df = trend_series.reset_index()
# 重命名列名方便识别
trend_df.columns = ['date', 'upload_trend']
# 将日期列转为字符串格式
trend_df['date'] = trend_df['date'].dt.strftime("%Y-%m-%d")
# 转为目标格式的嵌套列表
result_list = trend_df.values.tolist()

两种方法最终都会输出你需要的格式:[['2018-04-22', 3.919738], ['2018-04-23', 3.985145], ...]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:42:25