2015-01-14 59 views
1

我讀大量的數據從CSV用下面的代碼numpy.genfromtxt解析列名不正確

data = np.genfromtxt(inputfile.name, delimiter=',', dtype=float, names=True) 

根據文檔字符串文件,並使用名稱關鍵字與真值,意味着數據是在1d結構數組中構建的,其中原始CSV文件的列可以通過其名稱從文件的第一行獲取。

雖然這一般工作,似乎名稱字符串不被解析,因爲我期望作爲原始字符串。 r'some string'

例如從文件

s = "LNAGain(Corner=nom_8;modelFiles=model.paths.scs;cur_ctl_counter=1;vsupply=1.65;temperature=85) Y" 
#correct 

字符串被解析爲

s="LNAGain_Cornernom_8modelFilesmodelpathsscscur_ctl_counter1vsupply165temperature85_Y" 
#wrong 

所以錯過了等號,分號和括號。 有沒有辦法強制讀取原始字符串?或者這是numpy方法中的一個錯誤?

如果我剛纔讀與

inputfile.readline() 

一切線正確地分析/因爲我想要的。

在此先感謝!

回答

1

我解決了我的問題,使用熊貓模塊進行csv導入,而不是numpy。請參閱http://pandas.pydata.org

它似乎以更聰明的方式解析包含數據的文本文件。

所以,與其做

import numpy as np 
data = np.genfromtxt(inputfile.name, delimiter=',', dtype=float, names=True) 

我做

import pandas as pd 
data = pd.read_csv(inputfile.name, sep=',') 

所有的罰款。 :)

當然,我不得不編輯我的代碼,以使用熊貓方法來處理數據對象,但更改輕微。

例如訪問數據列,我會用

data[data.columns[column_index]] 

,而不是

data[data.dtype.names[column_index]