如何仅将csv文件中的特定列加载到DataFrame中

时间:2012-11-05 16:20:59

标签: python pandas csv

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

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

2 个答案:

答案 0 :(得分:25)

Ian,我实现了一个usecols选项,它完全符合您的描述。它将在即将到来的熊猫0.10;开发版即将推出。


0.10以来,您可以使用usecols之类的

df = pd.read_csv(...., usecols=['name', 'age',..., 'income'])

答案 1 :(得分:3)

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

这样的东西