首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取任意列包含特定值的行的子集

获取任意列包含特定值的行的子集
EN

Stack Overflow用户
提问于 2018-06-04 04:16:39
回答 1查看 230关注 0票数 0

我有一个非常大的数据文件(foo.sas7bdat),我希望在不将整个数据文件加载到内存的情况下过滤其中的行。例如,我可以通过执行以下操作来打印数据集的前20行,而无需将整个文件加载到内存中:

代码语言:javascript
复制
import pandas
import itertools

with pandas.read_sas('foo.sas7bdat') as f:
    for row in itertools.islice(f,20):
        print(row)

但是,我不清楚如何只打印(或者最好放在新文件中)包含任何包含数字123.1的列的行。我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2018-06-04 09:08:30

Pandas能够一次提取一块数据帧。根据read_sas()文档的“分块大小”,我遇到了这样的情况:

http://pandas.pydata.org/pandas-docs/stable/io.html#iterating-through-files-chunk-by-chunk

代码语言:javascript
复制
for chunk in pd.read_sas('foo.sas7bdat', interator=True, chunksize=100000):
    print(chunk)

这将得到100,000行的代码块。至于另一个问题,你需要一个查询。然而,我不知道这个问题的约束条件。如果您创建一个包含所有列的Dataframe,那么您可能仍然会溢出内存空间,因此一个有效的方法是收集索引并将其放入一个集合中,然后对这些索引进行排序,如果您想将这些索引放入Dataframe中,则使用.iloc获取这些条目。

您可能需要使用考虑到这一点的工具。Dask是在集群上使用的一个很好的替代方案。

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

https://stackoverflow.com/questions/50670598

复制
相关文章

相似问题

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