CSV模块,Python:列表索引超出范围

2024-05-23 14:18:59 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我尝试使用Python中的CSV模块从两个excel文件中的一些列中获取数据。我不熟悉编程,所以可能犯了一个非常愚蠢的错误,请原谅我。。。在

它看起来是这样的:

import sys
import csv

##functions

resultsdir = "/blah"

filename1=sys.argv[1]
filename2=sys.argv[2]
out = open(sys.argv[3],"w") 

#filename1,filename2 = "blub", "blub2"

reader1 = csv.reader(open(resultsdir+"/"+filename1+".csv"), delimiter= '\t')
reader2 = csv.reader(open(resultsdir+"/"+filename2+".csv"), delimiter= '\t')

fields1 = reader1.next()
fields2 = reader2.next()

CNVs1 = dict()
CNVs2 = dict()

现在我想从两个excel文件中的3列中获取数据,这是我所做的:

^{pr2}$

reader2也是一样。 运行它时,我收到以下错误消息:

start = row[4]
list index out of range

我不知道这意味着什么,正如我所说的,我是新手,所以它可能很简单。有什么想法吗?在


Tags: 文件csvimport错误sysopenoutexcel
1条回答
网友
1楼 · 发布于 2024-05-23 14:18:59

尝试使用Pandasread_csv函数并显式指定要使用的列。例如

import pandas as pd

# some code

reader1 = pd.read_csv('excelfile.csv', usecols=[4,5,6])
reader1 = reader1.values.tolist()

# Now you can access the elements in the list reader1

for row in reader1:
    print(row)  

如何修改这完全是你的选择。
另外,如果您想指定一系列列,那么您也可以像这样使用usecols中的range函数:
usecols=range(4,7)其中列从第4列开始,到第6列结束(不考虑第7列)。
您可以随时在线找到使用熊猫的文档和示例。这是一个很棒的图书馆。
我不确定您是否需要其他建议,但我会说在代码中使用defaultdict而不是内置的dict()函数。在

相关问题 更多 >