2014-09-24 185 views
0

我有一个需要使用np.recfromcsv读取的csv文件。我遇到的问题是其中一列缺少名称。你可以在这里看到csv文件:https://github.com/btel/visualization-talk/blob/master/Exercises/data/crabs.csv。第一列缺少标题名称。当我读到下面我的代码的文件,它给我的错误:Python使用np.recfromcsv读取csv文件

File "prob1.py", line 11, in <module> 
    main() 
    File "prob1.py", line 7, in main 
    data = np.recfromcsv('crabs.csv', delimiter=",", names=True) 
    File "/Library/Python/2.7/site-packages/numpy-1.9.0-py2.7-macosx-10.9-intel.egg/numpy/lib/npyio.py", line 1904, in recfromcsv 
    output = genfromtxt(fname, **kwargs) 
    File "/Library/Python/2.7/site-packages/numpy-1.9.0-py2.7-macosx-10.9-intel.egg/numpy/lib/npyio.py", line 1686, in genfromtxt 
    raise ValueError(errmsg) 

我使用的参数名固定误差=无,这是什么做它,它给每列从F0,F1默认名称...但是我只希望在列没有提供名称时。

我的代码可以看到下面:

import numpy as np 
import matplotlib 
import matplotlib.pyplot as plt 
import matplotlib as mpl 

def main(): 
    data = np.recfromcsv('crabs.csv', names=None) 
    print data.dtype.fields 

if __name__ == '__main__': 
    main() 
+0

你可以不包裹在一个'尝试Catch ValueError',如果发现然后设置'Names = None'? – EdChum 2014-09-24 15:25:14

+0

我不确定如何使用try catch。 – 2014-09-24 15:26:32

+1

当文件很小,问题很简单时,为什么不复制文件,修正这个小小的头文件错误,然后继续? – FrobberOfBits 2014-09-24 15:34:25

回答

0

我添加的代码行和三行的评论你的主要功能, 请看看这是你所需要的...

def main(): 
    data = np.recfromcsv('crabs.csv', names=None) 
    # I'm using the column names in your csv file, to which I prepended a dummy name 
    # you should be able to reopen/rewind the file and read the header line 
    # to get the correct names in similar cases 
    data.dtype.names = ('n', 'sp', 'sex', 'index', 'FL', 'RW', 'CL', 'CW', 'BD') 
    print data.dtype.fields