2016-10-10 2 views
1

Derzeit bin ich mit diesen Code eine vollständige CSV-Datei zu meinem Code zu lesen:Mehrere CSV-Dateien mit Kopfzeilen in Python mit numpy lesen?

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

Allerdings habe ich nun mehrere CSV-Dateien, die in diesem Format sind.

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 

Dies ist die Methode, die ich tun denke, aber es funktioniert nicht. eine Valueerror bekommen: konnte nicht konvertieren Zeichenfolge zu schweben:

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]) 

Der Fehler, den ich bekommen habe ist:

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

Beide Beispieldateien laden sich für mich gut. Sind Sie sicher, dass alle drei Eingabedateien nur eine einzige Zeile Header haben, und der ganze Rest ist ein richtiger csv bis zum Ende? Ich bezweifle das. Überprüfen Sie außerdem, woher der Fehler kommt: Es sollte einer der 'loadtxt' Aufrufe sein, der Ihnen sagt, welche Datei problematisch ist. –

+0

@AndrasDeak Ich habe die Frage mit dem Fehler bearbeitet. –

+1

Es könnte ein Problem mit einer leeren Zeile am Ende der Datei sein ... nur eine Vermutung. – kpie

Antwort

1

Es ist eine missing value in Datei log40a.csv sein muss.

Ich habe den gleichen Fehler für Datei wie:

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

Base auf documentation wenn Sie Werte fehlen sollten Sie genfromtxt function verwenden.

+0

Ja, ich habe einige fehlende Werte. Ist es möglich, es überspringen zu lassen? –

+0

Eigentlich würde ich lieber den letzten Wert in der gleichen Zeile verwenden wie der fehlende Wert ist das möglich? –

+0

Sie können alle fehlenden Werte finden, sie durch die letzte in der Zeile ersetzen und dann die 'loadxt'-Funktion verwenden. Sie müssen zunächst Ihre Datendateien vorbereiten. – torm