python - Skiprow 条件基于值而不是 pandas 中的索引

标签 python python-3.x pandas dataframe

我正在尝试读取 pandas 中的 csv 文件。数据如下:

Date    Value   Valid
23/05/2018  12  Yes
24/05/2018  13  No
25/05/2018  45  No
26/05/2018  11  Yes
27/05/2018  66  Yes
28/05/2018  50  No
29/05/2018  34  Yes
30/05/2018  27  No

我只想读取 Valid 列的输入值为 Yes 的行。这样做的最佳方式是什么?

我想在阅读之前而不是之后过滤它。

最佳答案

您不能在阅读之前忽略行。

相反,您可以在读取数据后进行过滤:

# read file to dataframe
df = pd.read_csv('file.csv')

# apply mask to dataframe
df = df[df['Valid'] == 'Yes']

如果您遇到内存问题,例如,有大量“否”行,读入内存的成本很高,您可以分块。一种静默分块的便捷方式是 dask.dataframe:

import dask.dataframe as dd

# create lazy reader object
df = dd.read_csv('file.csv')

# define filtering logic
df = df[df['Valid'] == 'Yes']

# apply filtering logic and convert to pandas dataframe
df = df.compute()

请注意,在上面的示例中,直到最后一行才涉及计算工作,其中 dask 获取数据 block 、过滤器,然后将结果聚合到常规 pandas 数据帧中。

关于python - Skiprow 条件基于值而不是 pandas 中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50606882/

相关文章:

Python mysql 复制客户端不显示值

python - 如何在Python中向整数添加尾随零?或者如何在 python 中的任何整数后面添加零?

python / Pandas : using regular expressions remove anything in square brackets in string

Python Pandas : convert list of objects to a list of integer

python - Wagtail 'View live' 按钮在使用 id 作为 slug 时创建页面后提供错误的 url

python - PyQt:app.exec_() 停止运行以下所有代码

python-3.x - 当我尝试创建 Kaggle 竞赛模型时获取 "Tensorflow %s is not valid scope name error"

python-3.x - 如何根据另一列中的某些值创建新列

python - 修复 Pygame 玩家输入响应时间

python - 通过重复最后一行来增加数据帧中每 1 秒的采样频率