我正在尝试使用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
pandas.parser.TextReader.read中的pandas \ parser.pyx (熊猫\ parser.c:8748)() pandas.parser.TextReader._read_low_memory中的
尝试: - > 1314 data = self._reader.read(nrows)1315除了StopIteration:1316 if self._first_chunk: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
答案 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 ="")