有几种方法可以做到这一点:
- 阅读整个 CSV,然后使用
df.tail
- 以某种方式反转文件(对大文件执行此操作的最佳方法是什么?)然后使用
nrows
参数进行读取 - 以某种方式找到 CSV 中的行数,然后使用
skiprows
并读取所需的行数。 - 也许做块读取丢弃初始块(虽然不确定这将如何工作)
可以用更简单的方法完成吗?如果不是,应该首选这三者中的哪一个,为什么?
可能相关:
无直接关系:
原文由 Nipun Batra 发布,翻译遵循 CC BY-SA 4.0 许可协议
有几种方法可以做到这一点:
df.tail
nrows
参数进行读取skiprows
并读取所需的行数。可以用更简单的方法完成吗?如果不是,应该首选这三者中的哪一个,为什么?
可能相关:
无直接关系:
原文由 Nipun Batra 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个方便的方法。适用于我喜欢做的事情 -
import tailer
import pandas as pd
import io
with open(filename) as file:
last_lines = tailer.tail(file, 15)
df = pd.read_csv(io.StringIO('\n'.join(last_lines)), header=None)
您需要安装 tailer 才能正常工作:
pip install --user tailer
原文由 Parikshit Bhinde 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
我不认为 pandas 在
read_csv
中提供了执行此操作的方法。也许最巧妙的(一次通过)是使用
collections.deque
:_另一个值得尝试的选择是 在第一遍中获取行数, 然后再次读取文件,使用
read_csv
跳过该行数(减去 n)…_