我有一個標準格式的csv輸入文件,其中包含一個凌亂的標題,然後是35列和8760行的數組。所有這些數據都是數字,除了第6列,這是文本。我曾嘗試允許genfromtxt()
自己弄清楚這一點,但最終該專欄轉向nan
s,我相信因爲沒有引號。在csv文件中讀取一列中間的字符串
目前,我正在讀這個數組如下:
WeaData = np.genfromtxt(FileIn, delimiter=",", skip_header=8)
我試圖與
WeaData = np.genfromtxt(FileIn, delimiter=",", skip_header=8, dtype=(float,float,float,float,float,str,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float))
和
WeaData = np.genfromtxt(FileIn, delimiter=",", skip_header=8, dtype=[float for n in range(5)]+['S10']+[float for n in range(29)])
,但沒有運氣手動指定列類型。我相信我的語法在第一個選項中是錯誤的,第二個返回空白數組。有沒有簡單的方法來做到這一點,最好不指定35列類型?
這裏有三行我的csv文件供參考,在我不關心的標題後面。
1966,1,1,1,60,A7A7A7A7*0?0?0?0?0?0?0?0A7A7A7A7A7A7F8F8A7E7,3.9,1.7,86,102400,0,0,264,0,0,0,0,0,0,0,230,2.1,0,0,24.1,77777,0,999999999,8,0.1000,0,88,0.000,0.0,0.0
1966,1,1,2,60,A7A7A7A7*0?0?0?0?0?0?0?0A7A7A7A7A7A7F8F8A7E7,4.4,0.0,73,102500,0,0,265,0,0,0,0,0,0,0,270,3.6,0,0,24.1,77777,0,999999999,8,0.1000,0,88,0.000,0.0,0.0
1966,1,1,3,60,A7A7A7A7*0?0?0?0?0?0?0?0A7A7A7A7A7A7F8F8A7E7,2.8,-0.6,79,102500,0,0,258,0,0,0,0,0,0,0,310,2.1,0,0,24.1,77777,0,999999999,8,0.1000,0,88,0.000,0.0,0.0
我正在使用Python V2.7。
嗨,有很多方法來讀取一個CSV應該看看這個[問題](http://stackoverflow.com/questions/20982437/how-to-parse-a-csv-with-python-當一列有多行) – ELavicount
是否有你需要直接讀取到一個numpy數組的原因?你可能應該看看'pandas' –
使用一個只顯示三行的數據文件,你的第二個例子適用於我。我將「S10」更改爲「S32」以確保文本字段未被截斷,並且我沒有使用「skip_header」參數,因爲我沒有添加標題。當你像這樣指定一個dtype時,該函數返回一個結構化數組(http://docs.scipy.org/doc/numpy/user/basics.rec.html)。那是你得到的嗎? –