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

时间:2018-05-30 14:10:57

标签: 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

我想只读取有效列的输入值为是的行。最好的方法是什么?

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

如果你遇到内存问题,例如,有很多'No'行,读取内存很昂贵,你可以大块。 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采用块,过滤器,然后将结果聚合到常规pandas数据帧。