我有大型 CSV,其中我只对行的子集感兴趣。特别是,我想读入满足特定条件之前发生的所有行。
例如,如果 read_csv
将产生数据帧:
A B C
1 34 3.20 'b'
2 24 9.21 'b'
3 34 3.32 'c'
4 24 24.3 'c'
5 35 1.12 'a'
...
1e9 42 2.15 'd'
有什么方法可以读取 csv 中的所有行,直到 col B 超过 10。在上面的示例中,我想读入:
A B C
1 34 3.20 'b'
2 24 9.21 'b'
3 34 3.32 'c'
4 24 24.3 'c'
我知道如何在读取数据帧后将这些行扔掉,但此时我已经花费了所有计算来读取它们。在读取 csv 之前我无法访问最后一行的索引(请不要 跳脚)
原文由 eretmochelys 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以分块读取 csv。由于
pd.read_csv
将在指定chunksize
参数时返回一个迭代器,您可以使用itertools.takewhile
只读取所需数量的块,而不需要读取整个文件.或者,为了避免必须使用
df.loc[mask]
从最后一个块中删除不需要的行,也许更清晰的解决方案是定义自定义生成器: