所以,我正在尝试使用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列中获取数据,这就是我所做的:
for row in reader1:
start = row[4] #start being the title of the 5th column, this is probably where I went wrong...
end = row[5]
BF = float(row[9])
CNVs1[chr].append([int(start),int(end),BF])
和读者2再次相同。 当我运行它时,我收到以下错误消息:
start = row[4]
list index out of range
我不知道在这种情况下这意味着什么,正如我所说的,我是新手,所以它可能非常简单。有任何想法吗?
答案 0 :(得分:0)
尝试使用 Pandas 的read_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)
您如何选择修改此选项完全是您的选择
此外,如果您要指定一系列列中的列,那么您也可以使用range
中的usecols
功能,如下所示:
usecols=range(4,7)
其中列从第4列开始,到第6列结束(不考虑第7列)
您随时可以找到在线使用 Pandas 的文档和示例。这是一个很棒的图书馆
我不确定您是否需要其他建议,但我会在您的代码中使用defaultdict
而不是内置的dict()
函数。