2012-11-05 51 views
6

假设我有一个包含400列的csv文件。我无法将整个文件加载到DataFrame中(不适合内存)。但是,我只想要50列,这将适合内存。我没有看到任何内置熊猫的方式来做到这一点。你有什么建议?我愿意使用PyTables接口或pandas.io.sql。如何将csv文件中的特定列加载到DataFrame中

最好的情况将是一个函数,如:pandas.read_csv(....,columns = ['name','age',...,'income'])。即我们传递将要加载的列名称(或数字)的列表。

回答

3

现在没有默认的方法来做到这一点。我建议分块文件并迭代它并丢弃你不想要的列。 所以像pd.concat([x.ix[:, cols_to_keep] for x in pd.read_csv(..., chunksize=200)])

16

伊恩,我实施了usecols选项,它完全符合你的描述。它将在即将到来的大熊猫0.10;开发版本即将推出。


由于0.10,您可以使用usecols

df = pd.read_csv(...., usecols=['name', 'age',..., 'income']) 
相关问题