A.D*_*.DS 4 python dataframe python-3.x pandas
我正在尝试在 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
Run Code Online (Sandbox Code Playgroud)
我只想读取 Valid 列的输入值为 Yes 的行。这样做的最佳方法是什么?
我想在阅读之前而不是在阅读之后过滤它。
您不能在阅读之前忽略行。
相反,您可以在读取数据后进行过滤:
# read file to dataframe
df = pd.read_csv('file.csv')
# apply mask to dataframe
df = df[df['Valid'] == 'Yes']
Run Code Online (Sandbox Code Playgroud)
如果您遇到内存问题,例如,有大量“否”行,读入内存的成本很高,您可以分块。一种方便的静默分块方法是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()
Run Code Online (Sandbox Code Playgroud)
请注意,在上面的示例中,直到最后一行才涉及计算工作,其中dask获取块、过滤器,然后将结果聚合到常规pandas数据帧。
| 归档时间: |
|
| 查看次数: |
5382 次 |
| 最近记录: |