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

动态列表长度引发pandas.DataFrame IndexError的最优规避方案

解决方案

核心思路

  • 不要硬编码固定行数和下标索引,而是将日期列表按「每2个元素为一组」动态拆分,有多少组就生成多少行DataFrame数据,自然适配列表的可变长度。
  • 原有日期追加的条件判断逻辑无需修改,保持成对新增日期的规则即可。

实现代码

import pandas as pd
import datetime

start_date = datetime.date(2025, 1, 1)
date_lst = [datetime.date(2020, 1, 1), datetime.date(2021, 1, 1)]

# 原有条件判断逻辑保持不变
if date_lst[0] > start_date:
    date_lst.append(datetime.date(2022, 1, 1))
    date_lst.append(datetime.date(2023, 1, 1))

# 动态生成行数据,按每2个元素一组拆分
rows = []
for idx in range(0, len(date_lst), 2):
    # 增加边界判断,避免列表长度为奇数时出现索引错误
    if idx + 1 < len(date_lst):
        rows.append({
            "Task": f"DateRange {idx//2 + 1}",
            "Start": date_lst[idx],
            "End": date_lst[idx+1]
        })

df = pd.DataFrame(rows)
print(df)

效果验证

  • 条件不满足(date_lst长度为2)时,输出仅1行数据,无报错:
Task       Start         End
0  DateRange 1  2020-01-01  2021-01-01
  • 条件满足(date_lst长度为4)时,输出2行数据,和原有预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:36:03