首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫/ odo / bcolz从大型CSV文件中选择性加载行

熊猫/ odo / bcolz从大型CSV文件中选择性加载行
EN

Stack Overflow用户
提问于 2016-02-04 15:40:57
回答 1查看 523关注 0票数 0

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

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

odo或Pandas是否为这种类型的有选择地将行加载到数据仓库的方法提供了便利?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-04 19:44:15

odopandas中,我不知道任何事情都能做您想要做的事情,也就是说,您只需要调用一个函数,其他的一切都是在幕后完成的。但是,您可以编写一个简短的pandas脚本来完成任务。

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

代码语言:javascript
复制
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_csvpd.concat添加/更改参数。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35205268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档