如何在读取csv文件(python、pandas)时设置正确的参数

如何在读取csv文件(python、pandas)时设置正确的参数,python,pandas,csv,numpy,merge,Python,Pandas,Csv,Numpy,Merge,培训数据= 测试数据= 当我这样做时,读取测试数据时出错,而不是读取训练数据,即使布局相同: Traceback (most recent call last): File "dtree.py", line 61, in <module> dtree() File "dtree.py", line 12, in dtree test_data = pd.read_csv('adult.test.txt',sep= ',', header= None) File "/usr/lib

培训数据= 测试数据=

当我这样做时,读取测试数据时出错,而不是读取训练数据,即使布局相同:

 Traceback (most recent call last):
 File "dtree.py", line 61, in <module>
dtree()
File "dtree.py", line 12, in dtree
test_data = pd.read_csv('adult.test.txt',sep= ',', header= None)
File "/usr/lib/python2.7/dist-packages/pandas/io/parsers.py", line 
498, in parser_f
return _read(filepath_or_buffer, kwds)
File "/usr/lib/python2.7/dist-packages/pandas/io/parsers.py", line 
285, in _read
return parser.read()
File "/usr/lib/python2.7/dist-packages/pandas/io/parsers.py", line 
747, in read
ret = self._engine.read(nrows)
File "/usr/lib/python2.7/dist-packages/pandas/io/parsers.py", line 
1197, in read
data = self._reader.read(nrows)
File "pandas/parser.pyx", line 766, in pandas.parser.TextReader.read 
(pandas/parser.c:7988)
File "pandas/parser.pyx", line 788, in 
pandas.parser.TextReader._read_low_memory (pandas/parser.c:8244)
File "pandas/parser.pyx", line 842, in 
pandas.parser.TextReader._read_rows (pandas/parser.c:8970)
File "pandas/parser.pyx", line 829, in 
pandas.parser.TextReader._tokenize_rows (pandas/parser.c:8838)
File "pandas/parser.pyx", line 1833, in 
pandas.parser.raise_parser_error 
(pandas/parser.c:22649)
pandas.parser.CParserError: Error tokenizing data. C error: Expected 1 
fields in line 2, saw 15
回溯(最近一次呼叫最后一次):
文件“dtree.py”,第61行,在
dtree()
文件“dtree.py”,第12行,在dtree中
test_data=pd.read_csv('maintal.test.txt',sep=',,header=None)
文件“/usr/lib/python2.7/dist-packages/pandas/io/parsers.py”,第行
498,在语法分析器中
返回读取(文件路径或缓冲区,kwds)
文件“/usr/lib/python2.7/dist-packages/pandas/io/parsers.py”,第行
285,在读
返回parser.read()
文件“/usr/lib/python2.7/dist-packages/pandas/io/parsers.py”,第行
747,已读
ret=自身。\发动机读取(nrows)
文件“/usr/lib/python2.7/dist-packages/pandas/io/parsers.py”,第行
1197年,在读
数据=自身。\读卡器读取(nrows)
pandas.parser.TextReader.read中的文件“pandas/parser.pyx”,第766行
(A/c.7988)
文件“pandas/parser.pyx”,第788行,在
pandas.parser.TextReader.\u读取\u内存不足(pandas/parser.c:8244)
文件“pandas/parser.pyx”,第842行,在
pandas.parser.TextReader.\u读取\u行(pandas/parser.c:8970)
文件“pandas/parser.pyx”,第829行,在
pandas.parser.TextReader.\u标记化\u行(pandas/parser.c:8838)
文件“pandas/parser.pyx”,第1833行,在
pandas.parser.raise_parser_错误
(A/c.22649)
pandas.parser.CParserError:标记数据时出错。C错误:应为1
第2行中的字段,saw 15
因此,我在test_数据中更改了header=0,并编译了它,但它只有1列,而不是像train_数据中那样的15列。这会导致问题,因为test_data.values只给出最后一列,与train_data.values不同


我注意到测试和训练数据有两个不同之处。在测试中,每一行都以一个全站结束,在这里训练没有任何内容,测试中的第一行不是一个条目,就像火车一样。是不是这些因素造成了这些问题?如何克服它们?

pandas.read\u csv()
函数中有一个参数

skiprows : list-like or integer or callable, default None

    Line numbers to skip (0-indexed) or number of lines to skip (int) at the start of the file.

    If callable, the callable function will be evaluated against the row indices, returning True if the row should be skipped and False otherwise. An example of a valid callable argument would be lambda x: x in [0, 2].
你可以在

文件的第一行是:

|1x3交叉验证程序

不应将其解释为数据帧的标题或行

您应该尝试使用以下工具读取文件:

test_data = pd.read_csv('adult.test.txt',sep= ',', header= None,skiprows=1)
test_data = pd.read_csv('adult.test.txt',sep= ',', header= None,skiprows=1)