내 csv는 다음과 같습니다 (MQM Q.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
처음 몇 줄에는 "값"항목이 없지만 나중에 시작됩니다.
내 코드는 다음과 같습니다.
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)
다음과 같은 오류가 발생합니다.
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
이것은 csv 파서의 버그 인 것으로 보이며 먼저 작동합니다.
df = pd.read_csv('MQM Q.csv')
또한 이것은 작동합니다 :
df = pd.read_csv('MQM Q.csv', usecols=['Value'])
하지만 내가 원한다면 Date-Time
당신과 같은 오류 메시지로 실패합니다.
그래서 나는 그것이 utf-8로 인코딩되어 있다는 것을 알았고 그래서 메모장 ++을 사용하여 ANSI로 변환하고 작동했습니다. 그런 다음 BOM없이 utf-8을 시도했고 작동했습니다.
그런 다음 utf-8 (아마도 이제 BOM이 있음)으로 변환했으며 이전과 동일한 오류로 실패했기 때문에 지금 이미징하고 있다고 생각하지 않으며 버그처럼 보입니다.
python 3.3, pandas 0.14 및 numpy 1.8.1을 사용하고 있습니다.
이 문제를 해결하려면 다음을 수행하십시오.
df = pd.read_csv('MQM Q.csv', usecols=[0,1], parse_dates=True, dayfirst=True, index_col=0)
그러면 인덱스가 datetimeindex로 올바르게 변환되는 Date-Time 열로 설정됩니다.
In [40]:
df.index
Out[40]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-08-31 12:15:00, ..., 2013-11-28 10:45:00]
Length: 43577, Freq: None, Timezone: None
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다