【问题标题】:Get subset of rows where any column contains a particular value获取任何列包含特定值的行子集
【发布时间】:2018-11-13 04:47:38
【问题描述】:

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

import pandas
import itertools

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

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

【问题讨论】:

    标签: python pandas sas statistics


    【解决方案1】:

    Pandas 能够一次提取一个数据帧。按照 read_sas() 文档到“chunksize”的轨迹,我遇到了这个:

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

    for chunk in pd.read_sas('foo.sas7bdat', interator=True, chunksize=100000):
        print(chunk)
    

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

    您可能需要使用考虑到这一点的工具。 Dask 是在集群上使用的不错选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多