【问题标题】:How to load only specific columns from csv file into a DataFrame如何仅将 csv 文件中的特定列加载到 DataFrame 中
【发布时间】:2012-10-25 12:35:08
【问题描述】:

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

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

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

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

    【讨论】:

    • 你应该考虑更新答案,因为 pandas 0.1 你可以使用 usecols
    【解决方案2】:

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


    由于0.10,你可以使用usecolslike

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-20
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2019-04-12
      相关资源
      最近更新 更多