我正在尝试在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
我想只读取有效列的输入值为是的行。最好的方法是什么?
我想在阅读之前而不是之后过滤它。
答案 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
数据帧。