python 使用 pandas报错 list index out of range

python 使用 pandas报错 list index out of range,第1张

 问题:
import csv
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("D:/data/0403/output2.csv", index_col=0,encoding='GBK')
df[:3]

代码正确,出现错误:IndexError: list index out of range

参考答案:


https://blog.csdn.net/weixin_37746009/article/details/94367162l​​​​​​​l

关键点:

list在读取的时候下标是从0开始读取的,list在已经定义的范围内,我们可以读取到索引值对应的值,但是如果下标没有定义,那么他的值是没有办法读取到的,这个时候也就是为什么会出现IndexError: list index out of range。 

为了方便读者理解,以下代码创建参考表格

outfile = open(r"D:\data03\output11.csv", "w", newline="")
writer = csv.writer(outfile)
heads_transfer=['id','station','bus']
writer.writerow(heads_transfer)
a=[1,2,3,5]
b=[2,3,4,5]
writer.writerow(a)
writer.writerow(b)

输出数据

可以看到表头有三列,但是第二行有5列

重复之前的错误代码

import csv
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("D:/data/0403/output11.csv", index_col=0,encoding='GBK')
df[:3]

果然出现同款错误

IndexError: list index out of range
结合上面的解决思路:

关键就是表头即第一行的时候:下标只到2,而第二行超过了2,所以数据无法成功提取。

做法:

填充表头,使得表头和第二行一样长。

更改生成测试数据文件,

import csv
outfile = open(r"D:\data03\output11.csv", "w", newline="")
writer = csv.writer(outfile)
heads_transfer=['id','station','bus','taxi','car']
writer.writerow(heads_transfer)
a=[1,2,3,5,6]
b=[2,3,4,5,7]
writer.writerow(a)
writer.writerow(b)

输出成功

总结 

 第一行的列表长度和后面行的列表长度不一致从而出现问题。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/722445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存