动态列表长度引发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
相关产品推荐
相关产品推荐

