首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >genfromtxt返回NaN行

genfromtxt返回NaN行
EN

Stack Overflow用户
提问于 2014-11-22 00:50:57
回答 2查看 26.7K关注 0票数 9

我正在尝试使用numpy读取csv文件,并且我有以下代码

代码语言:javascript
复制
from numpy import genfromtxt
data = genfromtxt(open('errerr.csv', "r"), names=True, delimiter=',')

然后就会出现以下内容

代码语言:javascript
复制
  (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')])

dtype看起来很好

为了证明我没有发疯,我尝试了下面的代码

代码语言:javascript
复制
import csv
f = open('errors.csv', 'rt')
reader = csv.reader(f)
data = [] 
for r in reader: 
    data.append(r)
f.close()

这很好用,但我想弄清楚genfromtxt有什么问题。

以下是来自csv的示例

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-22 02:11:09

你的dtype不太好。它为每个字段指定了'<f8',一个浮点数。你想要字符串。试试dtype=None

代码语言:javascript
复制
 np.genfromtxt(txt,delimiter=',',names=True,dtype=None)

这会产生:

代码语言:javascript
复制
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')])

(我删除了引号中有关分隔符的无关内容)

票数 14
EN

Stack Overflow用户

发布于 2020-04-25 19:09:36

您还应该添加encoding=None,以避免出现已弃用的警告:

VisibleDeprecationWarning:不建议在不指定编码参数的情况下读取unicode字符串。设置编码,系统默认设置为None。

你的代码行应该是这样的:

代码语言:javascript
复制
np.genfromtxt(txt, delimiter=',', names=True, dtype=None, encoding=None)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27066371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档