Pandas read_csv import führt zu Fehler
Meine csv ist wie folgt (MQM F. csv):
Date-Time,Value,Grade,Approval,Interpolation Code
31/08/2012 12:15:00,,41,1,1
31/08/2012 12:30:00,,41,1,1
31/08/2012 12:45:00,,41,1,1
31/08/2012 13:00:00,,41,1,1
31/08/2012 13:15:00,,41,1,1
31/08/2012 13:30:00,,41,1,1
31/08/2012 13:45:00,,41,1,1
31/08/2012 14:00:00,,41,1,1
31/08/2012 14:15:00,,41,1,1
Den ersten paar Zeilen keine "Value" - Einträge, aber Sie beginnen später.
Hier ist mein code:
import pandas as pd
from StringIO import StringIO
Q = pd.read_csv(StringIO("""/cygdrive/c/temp/MQM Q.csv"""), header=0, usecols=["Date-Time", "Value"], parse_dates=True, dayfirst=True, index_col=0)
Bekomme ich die folgende Fehlermeldung:
Traceback (most recent call last):
File "daily.py", line 4, in <module>
Q = pd.read_csv(StringIO("""/cygdrive/c/temp/MQM Q.csv"""), header=0, usecols=["Date-Time", "Value"], parse_dates=True, dayfirst=True, index_col=0)
File "/usr/lib/python2.7/site-packages/pandas-0.14.0-py2.7-cygwin-1.7.30-x86_64.egg/pandas/io/parsers.py", line 443, in parser_f
return _read(filepath_or_buffer, kwds)
File "/usr/lib/python2.7/site-packages/pandas-0.14.0-py2.7-cygwin-1.7.30-x86_64.egg/pandas/io/parsers.py", line 228, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "/usr/lib/python2.7/site-packages/pandas-0.14.0-py2.7-cygwin-1.7.30-x86_64.egg/pandas/io/parsers.py", line 533, in __init__
self._make_engine(self.engine)
File "/usr/lib/python2.7/site-packages/pandas-0.14.0-py2.7-cygwin-1.7.30-x86_64.egg/pandas/io/parsers.py", line 670, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "/usr/lib/python2.7/site-packages/pandas-0.14.0-py2.7-cygwin-1.7.30-x86_64.egg/pandas/io/parsers.py", line 1067, in __init__
col_indices.append(self.names.index(u))
ValueError: 'Value' is not in list
Können Sie formatieren Sie Ihre Daten, oder geben Sie einen link, um es, wie ich deinen Fehler nicht reproduzieren können, und es ist unklar, wo die Formatierung fehlschlägt
Ähm, warum rufst du StringIO auf den Dateinamen?
Die folgenden arbeitete für mich:
Könnte Sie klären, was io und temp eingestellt sind?
Ich habe versucht, das entfernen der StringIO aber dann bekomme ich die Fehlermeldung "ValueError: 'Datum-Zeit' nicht in Liste"
Ähm, warum rufst du StringIO auf den Dateinamen?
Die folgenden arbeitete für mich:
pd.read_csv(io.StringIO(temp),header=0, usecols=["Date-Time", "Value"], parse_dates=True, dayfirst=True, index_col=0)
so ist das problem, das Sie mit StringIO, wenn es unnötig ist?Könnte Sie klären, was io und temp eingestellt sind?
Ich habe versucht, das entfernen der StringIO aber dann bekomme ich die Fehlermeldung "ValueError: 'Datum-Zeit' nicht in Liste"
InformationsquelleAutor Sid Kwakkel | 2014-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies scheint ein Fehler zu sein mit dem csv-parser, Erstens das funktioniert:
auch das funktioniert:
aber wenn ich will
Date-Time
dann schlägt er mit der gleichen Fehlermeldung wie bei dir.So, ich merkte, es war utf-8 codiert und so wandelte ich mit notepad++ in ANSI und es hat funktioniert, dann habe ich versucht, utf-8 ohne BOM und es auch funktioniert.
Ich dann konvertiert zu utf-8 (vermutlich gibt es jetzt eine Stückliste) und es scheiterte mit dem gleichen Fehler wie vorher, also ich glaube nicht, dass Sie ein imaging für das jetzt und das sieht aus wie ein bug.
Ich bin mit python 3.3, pandas 0,14 und numpy 1.8.1
Um dies zu tun:
Dies setzt den index auf das Datum-Zeit-Spalte wird korrekt konvertieren zu einem datetimeindex.
ich denke, in Wirklichkeit sollte es nur funktionieren, wenn Sie pass
encoding='utf-8'
jetzt:df = pd.read_csv('MQM Q.csv', usecols=[0,1], parse_dates=True, dayfirst=True, index_col=0, encoding='utf-8')
Sollte in der Antwort
InformationsquelleAutor EdChum
Deinen code Lesen sollte (keine Notwendigkeit von StringIO auf den Dateinamen!):
Sonst/aktuell pandas ist zu Lesen versucht, den string (der Pfad) in einen DataFrame:
die offensichtlich nicht, was Sie wollen (also Sie sehen, der Wert ist nicht eine Spalte Ausnahme).
ValueError: 'Date-Time' is not in list
InformationsquelleAutor Andy Hayden
Folgende arbeiten für mich (ich habe die CSV-Datei im gleichen Verzeichnis wie das Skript, aber das sollte keine Rolle spielen). Ich verwende das folgende script auf meinem Mac, nicht Cygwin, aber es sollte funktionieren auf die gleiche Weise:
Diskussion
InformationsquelleAutor Hai Vu