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

如何按最早最晚日期拼接Series列表为DataFrame?

解决方法

你的问题出在没有将每个子数据集的日期设为索引,直接按默认位置索引拼接导致日期无法对齐。按以下步骤处理即可得到预期结果:

步骤1:预处理每个子数据集

遍历final_1中的每个元素,将日期列转为时间类型并设为索引,同时重命名值列避免重复:

import pandas as pd

processed_list = []
for i, sub_df in enumerate(final_1):
    # 转换日期列为datetime格式
    sub_df['Dates'] = pd.to_datetime(sub_df['Dates'])
    # 将日期设为索引
    sub_df = sub_df.set_index('Dates')
    # 重命名Values列,用序号区分2000+个元素
    sub_df = sub_df.rename(columns={'Values': f'Series_{i}'})
    processed_list.append(sub_df)

步骤2:拼接并生成完整日期范围

用pd.concat按列拼接,再生成覆盖最早到最晚日期的完整索引(如果需要补全中间缺失的日期):

# 按日期外连接拼接所有子数据集
merged_df = pd.concat(processed_list, axis=1, join='outer')

# 生成从最早到最晚日期的完整序列(示例为周度频率,可根据你的数据调整freq参数)
min_date = merged_df.index.min()
max_date = merged_df.index.max()
full_dates = pd.date_range(start=min_date, end=max_date, freq='W')

# 重新索引,补全缺失日期(缺失值会填充为NaN)
final_df = merged_df.reindex(full_dates)

关键说明

  • 之前直接拼接时,每个子数据集的索引是默认的0、1、2...,拼接时按位置对齐而非日期,导致结果混乱。
  • 预处理时将日期设为索引后,pd.concat会自动按日期对齐,join='outer'会保留所有出现过的日期。
  • 如果你的数据不是周度,修改pd.date_range的freq参数即可(比如'D'为日度,'M'为月度)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:52:36