0

假设我们有大型 csv 文件(例如 200 GB),其中只有一小部分行(例如 0.1% 或更少)包含感兴趣的数据。

假设我们将这样的条件定义为让一个特定列包含来自预定义列表的值(例如,10K 个感兴趣的值)。

odoPandas 或 Pandas是否促进了将这种类型的行选择性加载到数据框中的方法?

4

1 回答 1

4

我不知道任何内容odopandas完全符合您的要求,从某种意义上说,您只需调用一个函数,其他一切都在幕后完成。但是,您可以编写一个简短的pandas脚本来完成工作。

基本思想是遍历适合内存的 csv 文件块,只保留感兴趣的行,然后在最后组合所有感兴趣的行。

import pandas as pd

pre_defined_list = ['foo', 'bar', 'baz']
good_data = []
for chunk in pd.read_csv('large_file.csv', chunksize=10**6):
    chunk = chunk[chunk['column_to_check'].isin(pre_defined_list)]
    good_data.append(chunk)

df = pd.concat(good_data)

pd.read_csv根据您的pd.concat具体情况添加/更改参数。

如果性能是一个问题,您可以通过使用替代方法来加快速度.isin,如答案中所述。

于 2016-02-04T19:44:15.237 回答