我有一个Python脚本,可以成功地将CSV文件加载到2D NumPy数组中,并成功提取所需单元格的值,该单元格是基于其列和行标题值确定的。为了诊断目的,我让脚本在将数据矩阵放入NumPy数组之前打印出其内容。当底层CSV文件的数据包含所有行/列的值时,该脚本可以正常工作。问题在于,如果我在空白行/列的CSV文件上运行脚本,则会引发错误。我尝试通过在Notepad++中打开CSV文件并从文件末尾删除尽可能多的内容来解决这个问题。Notepad++只允许我删除一行,但没有指示有任何空列。经过对Python打印输出和底层数据结构之间关系的更深入检查,我看到Python打印命令显示数组末尾有两个空列。无论如何,在编辑CSV文件后,当我运行脚本时,我仍然得到相同的数据打印输出,并且它仍然引发相同的错误,就好像我没有从CSV文件末尾删除空行一样。我检查了是否保存了CSV文件,打开和关闭了CSV文件几次,并关闭并重新打开了Python几次,但错误仍然存在。
我的问题是: 如何修改下面的脚本以避免此错误?
这是我上面提到的函数:
此外,供参考,这是打印出导致错误的数据的缩写版本。请注意末尾的空元素,我无法在运行脚本之前手动删除它们:
数据 HSD alpha 为:[['','5','6','7'],['2','5.7','5.24','4.95'],['3','6.98','6.33','5.92'],['11','10.48','9.3','8.55'],[],[]]
另外,供参考,这是从另一个csv文件中导入脚本进行诊断目的的数据的缩写版本。下面打印输出对应的数据没有导致脚本抛出错误:
数据 HSD alpha 为:[['','1','2','3'],['1','4052','98.49','34.12'],['2','4999','99.01','30.81'],['3','5403','99.17','29.46']]
同样,当我在Notepad++中打开底层csv文件时,似乎没有任何空列或行,并且我已经仔细检查了这些数据文件。
最后,我想象一下,空行/列的数量可能会有所变化,因此任何解决方案都需要能够处理可变数量的空行/列。
提前感谢。
我的问题是: 如何修改下面的脚本以避免此错误?
这是我上面提到的函数:
def GetHSD_alpha(NumberOfColumnMeans,dfResid):
dirname=os.path.dirname(os.getcwd())
resources=os.path.join(dirname,'resources')
inputfile=os.path.join(resources,'CriticalValuesOfTukeysHSD_a_0_01.csv')
separator=','
ColumnIndex=NumberOfColumnMeans
RowIndex=dfResid
cast = p.cast
data = [[] for dummy in xrange(13)]
for line in open(inputfile, 'r'):
fields = line.strip().split(separator)
for i, number in enumerate(fields):
data[i].append(number)
print 'data HSD alpha is: ',data
time.sleep(2)
CriticalValuesArray=p.array(data)
HSD_alpha_0_01=CriticalValuesArray[ColumnIndex,RowIndex]
return HSD_alpha_0_01
此外,供参考,这是打印出导致错误的数据的缩写版本。请注意末尾的空元素,我无法在运行脚本之前手动删除它们:
数据 HSD alpha 为:[['','5','6','7'],['2','5.7','5.24','4.95'],['3','6.98','6.33','5.92'],['11','10.48','9.3','8.55'],[],[]]
另外,供参考,这是从另一个csv文件中导入脚本进行诊断目的的数据的缩写版本。下面打印输出对应的数据没有导致脚本抛出错误:
数据 HSD alpha 为:[['','1','2','3'],['1','4052','98.49','34.12'],['2','4999','99.01','30.81'],['3','5403','99.17','29.46']]
同样,当我在Notepad++中打开底层csv文件时,似乎没有任何空列或行,并且我已经仔细检查了这些数据文件。
最后,我想象一下,空行/列的数量可能会有所变化,因此任何解决方案都需要能够处理可变数量的空行/列。
提前感谢。