【问题标题】:read a text file with pandas with a condition on a column读取带有熊猫条件的文本文件
【发布时间】:2020-04-17 12:33:14
【问题描述】:

我有一个巨大的文本文件,其中有 1.8 亿行,如下所示:

我想用 pandas 读取这个文本文件,但只读取“pdate”位于特定范围内的行。例如,我想读取“日期”在 981225 和 981229 之间的行。 由于整个文本文件很大,我不想阅读整个文件然后设置条件。 我只想阅读那些我的条件对它们正确的行。此外,我需要最快的方法,而不是逐行读取文件。 有什么解决办法吗?

【问题讨论】:

  • 逐行阅读有什么意义?
  • 这能回答你的问题吗? conditional row read of csv in pandas
  • @AlexandreB。符合我条件的行大约有 1 亿行,我认为逐行阅读它们需要时间。
  • @qaiser 实际上我猜“unutbu”答案中没有原因,“chunks”变量以块的形式读取整个文件,然后在其上应用“有效”函数并在“jpp”答案中,文件已被逐行读取。

标签: python csv


【解决方案1】:

这个问题的最佳解决方案是将文本文件转换为 CSV 文件。要了解如何转换,请阅读以下段落:

获取 csv 后,使用它访问用户范围的数据

df['two'].between(981225, 981229, inclusive=False)

如何将文本文件转换为 Csv 文件:

  1. 导入文本文件,使其可以被读取和解释为数据。在 Excel 中,此过程非常简单,只需单击“数据”选项卡,然后单击“来自文本”选项。

  2. 此时,系统会提示您从计算机中选择要使用的特定文本文件。找到适当的文件后,确认选择。

  3. 选择文件后,屏幕上会出现一系列菜单提示,允许您指定文本文件中数据的显示方式。这包括调整和创建折线的选项,以及宽度比率。根据您的需要自定义文档后,您可以按“确定”按钮完成选择。

  4. 此时,您的文本文件应正确格式化为确保与 CSV 格式完全兼容所需的各种行和单元格。现在,您可以在软件中选择“另存为”功能并选择 CSV 文件格式。完成后,您的文本文件将按计划完全转换为 CSV 格式。

【讨论】:

  • 你使用哪个函数来读取数据?我想我没有得到这一行 --df['two'].between(981225, 981229, inclusive=False) -- 你从 pd.read_csv 读取 df 吗?
  • 请删除大量段落,并把干净的压缩步骤放在首位。然后,您可以详细解释您的步骤。这种区别有助于所有类型的用户(他们只需要这些步骤而不是解释,以及那些想了解为什么要采取这些步骤的人)。
【解决方案2】:

如果您进一步使用它,您可以使用 Pandas 阅读它。如果这是最好的表现,我不会。

pd.read_csv(<file>, usecols=['..'], skiprows=<int>, nrows=<int>)

usecols: 选择列 skiprows 和 nrows: 您想要的框架。

但是,如果 Pandas 对您来说浪费了时间,您可以使用 open 对象中的 readline() 来完成。

extract = []
with open(<file>) as f:
    row_start = 500
    row_end = 520
    n = 0

    while n < row_start:
        f.readline()
        n += 1

    while n <= row_end:
        extract.append(f.readline())
        n += 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2015-07-29
    • 2019-03-31
    • 2020-04-17
    • 2017-10-21
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多