9

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

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

4

2 回答 2

30

伊恩,我实现了一个usecols完全符合您描述的选项。它将在即将发布的 pandas 0.10 中;开发版本将很快推出。


因为0.10,你可以使用usecolslike

df = pd.read_csv(...., usecols=['name', 'age',..., 'income'])
于 2012-11-10T05:41:17.987 回答
2

目前没有默认的方法来执行此操作。我建议对文件进行分块并对其进行迭代并丢弃您不想要的列。所以像pd.concat([x.ix[:, cols_to_keep] for x in pd.read_csv(..., chunksize=200)])

于 2012-11-05T16:30:58.537 回答