2016-10-10 77 views
1

目前我使用这个代码来读取一个完整的csv文件到我的代码:阅读多个CSV文件与python标题与numpy?

data = np.loadtxt('csv_Complete.csv', delimiter=',', skiprows=1) 

不过,现在我是在这种格式多个CSV文件。

Log1.csv

x1,x2,x3,x4.... 
1.5,3,5,7,8 
2,5,1.2,5,2 
1,3,3,5.5,6 

log2.csv

x1,x2,x3,x4.... 
1,3.3,5,7,8 
2,5.1,1,5.5,2 
1,3,3,5,6 

这是我想这样做的方法,但它不能正常工作。获得一个 ValueError异常:无法将字符串转换为float:

log1 = np.loadtxt('log1.csv', delimiter=',', skiprows=1) 
log2 = np.loadtxt('log2.csv', delimiter=',', skiprows=1) 
log3 = np.loadtxt('log3.csv', delimiter=',', skiprows=1) 
data = np.append([log1, log2, log3]) 

我得到的错误是:

File "<ipython-input-6-6155c8de61ad>", line 1, in <module> 
    runfile('C:/Users/Mmyname/.spyder2-py3/setdataexp.py', wdir='C:/Users/myname/.spyder2-py3') 

    File "C:\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 714, in runfile 
    execfile(filename, namespace) 

    File "C:\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 89, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "C:/Users/myname/.spyder2-py3/setdataexp.py", line 5, in <module> 
    log1 = np.loadtxt('log40a.csv', delimiter=',', skiprows=1) 

    File "C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 930, in loadtxt 
    items = [conv(val) for (conv, val) in zip(converters, vals)] 

    File "C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 930, in <listcomp> 
    items = [conv(val) for (conv, val) in zip(converters, vals)] 

    File "C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 659, in floatconv 
    return float(x) 

ValueError: could not convert string to float: 
+1

您的两个示例文件都可以正常加载。你确定所有三个输入文件只有一行标题,其余的都是正确的csv直到结束?我对此表示怀疑。此外,请检查错误来自哪里:它应该是'loadtxt'调用之一,告诉你哪个文件有问题。 –

+0

@AndrasDeak我编辑了错误的问题。 –

+1

这可能是您的文件末尾有空行的问题......只是一个猜测。 – kpie

回答

1

它必须是文件log40a.csv一个missing value

我有同样的错误就像文件:documentation

x1,x2,x3,x4.... 
1,3.3,5,7,8 
2,5.1,,5.5,2 
1,3,3,5,6 

基地,如果你丢失了一些值,你应该使用genfromtxt function

+0

是的,我确实有一些缺失值。是否有可能跳过它? –

+0

其实,我宁愿它使用同一行中的最后一个值作为缺失值是可能的? –

+0

您可以找到所有缺失的值,将它们替换为最后一行,并使用'loadtxt'函数。你首先需要准备你的数据文件。 – torm