我有一個python腳本,成功地將csv文件加載到2d numpy數組中,然後根據列成功提取所需單元格的值,行標題值。出於診斷目的,我將腳本打印到數據矩陣的內容中,然後將其放入numpy數組中。當來自底層csv文件的數據包含所有行/列的值時,該腳本可以工作。問題是,當我在csv文件上運行腳本時顯示錯誤,該文件在csv文件末尾顯然有幾個空行/列。我試圖通過在Notepad ++中打開csv文件來解決這個問題,並儘可能多地刪除文件末尾的內容。記事本+ +讓我刪除最後一行,但沒有表明有任何空列。在深入研究python打印輸出和底層數據結構之間的關係後,我發現python print命令說數組末尾有兩個空列。無論如何,編輯csv文件後,我仍然在運行腳本時打印出相同的數據,並且仍然拋出相同的錯誤,就好像我沒有從csv文件末尾刪除空行。我檢查,我已保存的csv文件,打開和關閉csv文件幾次,並關閉並重新打開蟒蛇幾次,但錯誤依然存在:Numpy csv腳本給'ValueError:設置一個序列的數組元素'
這裏是我的問題:
如何修改下面的腳本以避免此錯誤?
這裏是我指的是上面的函數:
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
另外,作爲參考,這裏是打印該引發錯誤的數據的結果的簡化版本。注意最後的空元素,在運行腳本之前,我似乎無法手動從我的csv文件中刪除:
數據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'],[],[]]
同樣作爲參考,這裏是ABBREVIATED版本的打印來自另一個csv文件的數據結果,我將其導入到腳本中用於診斷目的。從下面的打印輸出相應的數據不會導致腳本發生錯誤:
數據HSD alpha是:[['','1','2','3'],['1','4052' ''.49'','34 .12'],['2','4999','99 .01','30.81'],['3','5403','99 .17','29 .46']]
同樣,當我在Notepad ++中打開底層csv文件時,似乎沒有任何空的列或行,並且我已仔細檢查了這些數據文件。
最後,我想象空行/列的數量可能會有所不同,所以任何解決方案都需要能夠處理空行/列的變量數量。
預先感謝您。
你應該接受你自己的答案來標記問題已完成。 – katrielalex 2010-09-30 23:17:39