擅长:python、mysql、java
<p>你最好这样做:</p>
<p>指定<code>usecols</code>以子选择首先要<code>read_csv</code>的列,请参见<a href="http://pandas.pydata.org/pandas-docs/dev/io.html#filtering-columns-usecols" rel="noreferrer">here</a>。</p>
<p>然后分块读取文件,请参见<a href="http://pandas.pydata.org/pandas-docs/dev/io.html#iterating-through-files-chunk-by-chunk" rel="noreferrer">here</a>,如果要选择的行是select,则将它们分流到off,最后将结果连接起来。</p>
<p>伪代码ish:</p>
<pre><code>reader = pd.read_csv('big_table.txt', sep='\t', header=0,
index_col=0, usecols=the_columns_i_want_to_use,
chunksize=10000)
df = pd.concat([ chunk.ix[rows_that_I_want_] for chunk in reader ])
</code></pre>
<p>这将有一个恒定的内存使用量(块的大小)</p>
<p>加上所选行的用法x 2,这将在浓缩行时发生
在concat之后,用法将下降到所选行用法</p>