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

使用二维数组转换JSON为DataFrame时遭遇索引越界问题求助

解决List Index Out of Range错误的方案

嘿,我来帮你搞定这个问题!你遇到的list index out of range错误,根源出在二维数组的初始化环节。

问题原因

你初始化datadays的时候只写了datadays=[[]],这意味着这个列表里只有一个空列表(对应索引0)。当你进入第二个循环,尝试往datadays[1]添加元素时,这个索引位置根本还没被创建,Python找不到对应的元素,自然就抛出索引越界的错误了。

两种修复方案

方案1:提前初始化所有需要的空列表

直接把datadays初始化为包含三个空列表的二维数组,这样索引0、1、2都有对应的容器可以用:

from array import *
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import json

# 初始化包含3个空列表的二维数组,对应day1、day2、day3的数据
datadays=[[], [], []]

# 读取day1数据,用with语句自动管理文件关闭
with open('day1','r') as day1:
    for i in range(1400):
        datadays[0].append(json.loads(day1.readline()))

# 读取day2数据
with open('day2','r') as day2:
    for i in range(2500):
        datadays[1].append(json.loads(day2.readline()))

# 读取day3数据
with open('day3','r') as day3:
    for i in range(1500):
        datadays[2].append(json.loads(day3.readline()))

方案2:按需添加空列表

如果你不想一开始就初始化三个列表,也可以在每个循环前,往datadays里追加新的空列表:

from array import *
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import json

datadays=[[]]

# 读取day1数据
with open('day1','r') as day1:
    for i in range(1400):
        datadays[0].append(json.loads(day1.readline()))

# 先添加空列表,再读取day2数据
datadays.append([])
with open('day2','r') as day2:
    for i in range(2500):
        datadays[1].append(json.loads(day2.readline()))

# 再添加空列表,读取day3数据
datadays.append([])
with open('day3','r') as day3:
    for i in range(1500):
        datadays[2].append(json.loads(day3.readline()))

额外小建议

我把代码里的open()改成了with语句,这样Python会自动帮你关闭文件,不用手动调用close(),既避免了资源泄漏,代码也更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:19:12