高效地将CSV的最后“ n”行读入DataFrame
发布于 2021-01-29 17:53:08
一些方法可以做到这一点:
- 阅读整个CSV,然后使用
df.tail
- 以某种方式反转文件(对大文件执行此操作的最佳方法是什么?),然后使用
nrows
参数读取 - 以某种方式在CSV中找到行数,然后使用
skiprows
并读取所需的行数。 - 也许做块读取丢弃初始块(尽管不确定如何工作)
可以用更简单的方法吗?如果没有,那三者中哪一个更受欢迎?为什么?
关注者
0
被浏览
42
1 个回答
-
我不认为熊猫会提供一种方法来实现这一目标
read_csv
。也许最整洁(一次通过)是使用
collections.deque
:from collections import deque from StringIO import StringIO with open(fname, 'r') as f: q = deque(f, 2) # replace 2 with n (lines read at the end) In [12]: q Out[12]: deque(['7,8,9\n', '10,11,12'], maxlen=2) # these are the last two lines of my csv In [13]: pd.read_csv(StringIO(''.join(q)), header=None)
另一个值得尝试的选择是获取第一遍的行数,然后再次读取文件,使用
read_csv
…跳过该行数(减去n)。