Python读取\u csv,nrows=1
我有这段代码读取一个带有标题的文本文件。并附加另一个具有相同标题的文件。由于主文件非常大,我只想读取其中的一部分并获取列标题。 如果只有一行是标题,我将得到这个错误。我不知道文件有多少行。我想要实现的是读取文件并获取文件的列标题。因为我想向它附加另一个文件,所以我试图确保列是正确的Python读取\u csv,nrows=1,python,pandas,Python,Pandas,我有这段代码读取一个带有标题的文本文件。并附加另一个具有相同标题的文件。由于主文件非常大,我只想读取其中的一部分并获取列标题。 如果只有一行是标题,我将得到这个错误。我不知道文件有多少行。我想要实现的是读取文件并获取文件的列标题。因为我想向它附加另一个文件,所以我试图确保列是正确的 import pandas as pd main = pd.read_csv(main_input, nrows=1) data = pd.read_csv(file_input) d
import pandas as pd
main = pd.read_csv(main_input, nrows=1)
data = pd.read_csv(file_input)
data = data.reindex_axis(main.columns, axis=1)
data.to_csv(main_input,
quoting=csv.QUOTE_ALL,
mode='a', header=False, index=False)
检查堆栈跟踪:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\gohm\AppData\Local\Continuum\Anaconda\lib\site-packages\pandas\io\parsers.py", line 420, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\Users\gohm\AppData\Local\Continuum\Anaconda\lib\site-packages\pandas\io\parsers.py", line 221, in _read
return parser.read(nrows)
File "C:\Users\gohm\AppData\Local\Continuum\Anaconda\lib\site-packages\pandas\io\parsers.py", line 626, in read
ret = self._engine.read(nrows)
File "C:\Users\gohm\AppData\Local\Continuum\Anaconda\lib\site-packages\pandas\io\parsers.py", line 1070, in read
data = self._reader.read(nrows)
File "parser.pyx", line 727, in pandas.parser.TextReader.read (pandas\parser.c:7110)
File "parser.pyx", line 774, in pandas.parser.TextReader._read_low_memory (pandas\parser.c:7671)
StopIteration
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Users\gohm\AppData\Local\Continuum\Anaconda\lib\site packages\pandas\io\parsers.py”,第420行,在解析器中
返回读取(文件路径或缓冲区,kwds)
文件“C:\Users\gohm\AppData\Local\Continuum\Anaconda\lib\site packages\pandas\io\parsers.py”,第221行,已读
返回parser.read(nrows)
文件“C:\Users\gohm\AppData\Local\Continuum\Anaconda\lib\site packages\pandas\io\parsers.py”,第626行,已读
ret=自身。\发动机读取(nrows)
文件“C:\Users\gohm\AppData\Local\Continuum\Anaconda\lib\site packages\pandas\io\parsers.py”,第1070行,已读
数据=自身。\读卡器读取(nrows)
pandas.parser.textleader.read(pandas\parser.c:7110)中的文件“parser.pyx”,第727行
文件“parser.pyx”,第774行,在pandas.parser.TextReader.内存中(pandas\parser.c:7671)
停止迭代
看来整个文件可能正在被读入内存。您可以在read\u csv(…)
我认为在0.10版中,read\u csv
s的内存使用量已经过彻底检查。因此,从@WesMcKinney和相关评论中可以看出,您的版本也有所不同。这些变化不久前也曾在会议上讨论过
能否提供示例主输入文件的前几行以及有关文件输入的一些详细信息?您是否仅在运行
main=pd.read\u csv(main\u输入,nrows=1)
行时才获得smae行为?您也可以尝试pd.read\u csv(main\u input,nrows=1,header=None)
,因为这将只读取头行,而不是头行和第一行数据。您可能已经知道这一点,但是如果uuu name\uuuuuuu='\uu main\uuuuu':main()模块的惯用用法,对于重用和单元测试非常有用。
import pandas as pd
from cStringIO import StringIO
csv_data = """\
header, I want
0.47094534, 0.40249001,
0.45562164, 0.37275901,
0.05431775, 0.69727892,
0.24307614, 0.92250565,
0.85728819, 0.31775839,
0.61310243, 0.24324426,
0.669575 , 0.14386658,
0.57515449, 0.68280618,
0.58448533, 0.51793506,
0.0791515 , 0.33833041,
0.34361147, 0.77419739,
0.53552098, 0.47761297,
0.3584255 , 0.40719249,
0.61492079, 0.44656684,
0.77277236, 0.68667805,
0.89155627, 0.88422355,
0.00214914, 0.90743799
"""
tfr = pd.read_csv(StringIO(csv_data), header=None, chunksize=1)
main = tfr.get_chunk()