簡體   English   中英

帶有nrows = 1的Python熊貓read_csv

[英]Python Pandas read_csv with nrows=1

我有這段代碼讀取帶有標題的文本文件。 並將另一個具有相同標題的文件附加到該文件。 由於主文件非常大,所以我只想部分閱讀並獲取列標題。 如果唯一的行是標題,我將收到此錯誤。 而且我不知道文件有多少行。 我想要實現的是讀入文件並獲取文件的列標題。 因為我想向其追加另一個文件,所以我試圖確保這些列是正確的。

    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

似乎整個文件可能正在讀入內存。 您可以在read_csv(...)指定chunksize=read_csv(...) 的文檔中所述。

我認為read_csv的內存使用已在0.10版中進行了全面檢查。 因此,您的熊貓版本也有所不同,請參閱@WesMcKinney的答案以及相關注釋。 不久前還在Wes的博客上討論了這些更改

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM