pandas使用read_csv打开txt文件

时间:2017-06-24 04:44:20

标签: python pandas

我正在尝试使用pandas处理txt文件 但是,我在read_csv

中收到以下错误
  

CParserError Traceback(最近一次调用   最后)in()        22 Col.append(elm)        23   ---> 24修订= pd.read_csv(路径+文件,skiprows = Header + 1,header = None,delim_whitespace = True)        25        26 TimeSeries.append(修订版)

     

C:\ Users \ obakatsu \ Anaconda3 \ lib \ site-packages \ pandas \ io \ parsers.py in   parser_f(filepath_or_buffer,sep,delimiter,header,names,index_col,   usecols,squeeze,prefix,mangle_dupe_cols,dtype,engine,converter,   true_values,false_values,skipinitialspace,skiprows,skipfooter,   nrows,na_values,keep_default_na,na_filter,verbose,   skip_blank_lines,parse_dates,infer_datetime_format,keep_date_col,   date_parser,dayfirst,iterator,chunksize,compression,thousands,   十进制,lineterminator,quotechar,引用,escapechar,评论,   encoding,dialect,tupleize_cols,error_bad_lines,warn_bad_lines,   skip_footer,doublequote,delim_whitespace,as_recarray,compact_ints,   use_unsigned,low_memory,buffer_lines,memory_map,float_precision)       560 skip_blank_lines = skip_blank_lines)       561    - > 562 return _read(filepath_or_buffer,kwds)       563       564 parser_f。 name = name

     

C:\ Users \ obakatsu \ Anaconda3 \ lib \ site-packages \ pandas \ io \ parsers.py in   _read(filepath_or_buffer,kwds)       323返回解析器       324    - > 325 return parser.read()       326       327 _parser_defaults = {

     

C:\ Users \ obakatsu \ Anaconda3 \ lib \ site-packages \ pandas \ io \ parsers.py in   读(自我,nrows)       813引发ValueError('不支持迭代'的skip_footer')       814    - > 815 ret = self._engine.read(nrows)       816       817 if self.options.get('as_recarray'):

     

C:\ Users \ obakatsu \ Anaconda3 \ lib \ site-packages \ pandas \ io \ parsers.py in   read(self,nrows)1312 def read(self,nrows = None):1313
  尝试:    - > 1314 data = self._reader.read(nrows)1315除了StopIteration:1316 if self._first_chunk:

     pandas.parser.TextReader.read中的pandas \ parser.pyx   (熊猫\ parser.c:8748)()

     pandas.parser.TextReader._read_low_memory中的

pandas \ parser.pyx   (熊猫\ parser.c:9003)()

     pandas.parser.TextReader._read_rows中的

pandas \ parser.pyx   (熊猫\ parser.c:9731)()

     pandas.parser.TextReader._tokenize_rows中的

pandas \ parser.pyx   (熊猫\ parser.c:9602)()

     pandas.parser.raise_parser_error中的

pandas \ parser.pyx   (熊猫\ parser.c:23325)()

     

CParserError:标记数据时出错。 C错误:预计有4个字段   第6行,见到8

有谁知道如何解决这个问题?
我想要处理的python脚本和示例txt文件如下所示。

Path='data/NanFung/OCTA_Tower/test/'
files=os.listdir(Path)
TimeSeries=[]
Cols=[]
for file in files:
    new=open(Path+file)
    Supplement=[]
    Col=[]
    data=[]
    Header=0
    #calculate how many rows should be skipped
    for line in new:
        if line.startswith('Timestamp'):
            new1=line.split(" ")
            new1[-1]=str(file)[:-4]
            break
        else:
            Header += 1      

    #clean col name
    for elm in new1:
        if len(elm)>0:
            Col.append(elm)

    revised=pd.read_csv(Path+file,skiprows=Header+1,header=None,delim_whitespace=True)
    TimeSeries.append(revised) 
    Cols.append(Col)

txt文件

history:/NIKL6215_ENC_1/CH$2d19$2d1$20$20CHW$20OUTLET$20TEMP
20-Oct-12 8:00 PM CT  to  ?

Timestamp                  Trend Flags  Status  Value (ºC)
-------------------------  -----------  ------  ----------
20-Oct-12 8:00:00 PM HKT   {start}      {ok}    15.310 ºC 
21-Oct-12 12:00:00 AM HKT  { }          {ok}    15.130 ºC 

2 个答案:

答案 0 :(得分:1)

它失败了,因为您正在阅读的文件部分如下所示:

Timestamp                  Trend Flags  Status  Value (ºC)
-------------------------  -----------  ------  ----------
20-Oct-12 8:00:00 PM HKT   {start}      {ok}    15.310 ºC 
21-Oct-12 12:00:00 AM HKT  { }          {ok}    15.130 ºC 

但这里没有一致的分隔符。 read_csv无法理解如何阅读像您这样的固定宽度格式。您可以考虑使用分隔文件,例如列之间的制表符。

答案 1 :(得分:-1)

之前加入此行
file_name = Path+file #change below line to given
  

订正= pd.read_csv(路径+文件,skiprows =报头+ 1,标题=无,delim_whitespace =真)     modified = pd.read_csv(file_name,skiprows = Header + 1,header = None,sep ="")