2014-11-21 44 views
5

我想讀與numpy的一個CSV文件,我有以下代碼genfromtxt返回NaN的行

from numpy import genfromtxt 
data = genfromtxt(open('errerr.csv', "r"), names=True, delimiter=',') 

及以下出來

(nan, nan, nan, nan, nan, nan, nan), 
     (nan, nan, nan, nan, nan, nan, nan), 
     (nan, nan, nan, nan, nan, nan, nan)], 
     dtype=[('name', '<f8'), ('severity', '<f8'), ('Message', '<f8'), ('AppDomainName', '<f8'), ('ProcessName', '<f8'), ('clientid', '<f8'), ('type', '<f8')]) 

D型看起來不錯

和只是爲了證明我不會發瘋我試過這段代碼

import csv 
f = open('errors.csv', 'rt') 
reader = csv.reader(f) 
data = [] 
for r in reader: 
    data.append(r) 
f.close() 

偉大的工程,但即時通訊試圖找出什麼用genfromtxt

這裏的交易是從CSV

name,severity,Message,AppDomainName,ProcessName,clientid,type 
Strings strings,Error,") Thread Name: Extended Properties:",SunDSrvc.exe,C:\Program Files\\SunDSrvc.exe,5DAA9377 ,Client 
Strings strings,Error,") Thread Name: Extended Properties:",SunDSrvc.exe,C:\Program Files\\SunDSrvc.exe,5DAA9377 ,Client 
Strings strings,Error,") Thread Name: Extended Properties:",SunDSrvc.exe,C:\Program Files\\SunDSrvc.exe,5DAA9377 ,Client 
+3

請注意,如果您正在處理文本數據這樣的['pandas'] (http://pandas.pydata.org)可能是比裸露更好的選擇; 'pd.read_csv(「yourfile.csv」)'本來可以開箱即用。 – DSM 2014-11-21 18:20:22

+2

我會用numpy做一些其他的事情,所以如果可能的話,我會堅持使用一個框架 – Marcom 2014-11-24 13:31:50

回答

8

dtype樣本不精。它爲每個字段指定了一個浮點數'<f8'。你想要字符串。嘗試dtype=None

np.genfromtxt(txt,delimiter=',',names=True,dtype=None) 

主要生產:

array([ ('Strings strings', 'Error', '") Thread Name: Extended Properties:"', 'SunDSrvc.exe', 'C:\\Program Files\\SunDSrvc.exe', '5DAA9377 ', 'Client'), 
     ('Strings strings', 'Error', '") Thread Name: Extended Properties:"', 'SunDSrvc.exe', 'C:\\Program Files\\SunDSrvc.exe', '5DAA9377 ', 'Client'), 
     ('Strings strings', 'Error', '") Thread Name: Extended Properties:"', 'SunDSrvc.exe', 'C:\\Program Files\\SunDSrvc.exe', '5DAA9377 ', 'Client')], 
     dtype=[('name', 'S15'), ('severity', 'S5'), ('Message', 'S39'), ('AppDomainName', 'S12'), ('ProcessName', 'S29'), ('clientid', 'S9'), ('type', 'S6')]) 

(我已刪除多餘的東西,關於引號內的分隔符)

+0

'')''搞亂了我,我會刪除額外分隔符的東西 – hpaulj 2014-11-21 18:47:43

+0

這樣做的伎倆。我在某些時候設定了這個設置,但在清理導致我誤入歧途的數據時遇到了其他問題。謝謝:) – Marcom 2014-11-24 13:33:24