从CSV文件中读取最后N行到Pandas DataFrame

时间:2018-04-01 07:44:17

标签: python pandas csv dataframe

我有一些csv文件,每小时会在每个文件中添加一行。

我想从文件中读取最后20行并将它们加载到数据帧中。

我的方法是:

log_total = [pd.read_csv(f, skiprows=) for f in glob('./coins/*.csv')]

如何计算文件中的总行数?

1 个答案:

答案 0 :(得分:0)

AFAIK如果你不确切地知道应该跳过多少行,Pandas中没有内置的内存效率方法来解析最后N行。

您可以尝试以下方法:

from collections import deque
from io import StringIO

def read_last_lines(fn, n=20, encoding='utf-8', **kwargs):
    with open(fn, encoding=encoding) as f:
        return pd.read_csv(StringIO(''.join(deque(f, n))), **kwargs)


log_total = pd.concat([read_last_lines(f,20) for f in glob('./coins/*.csv')], 
                      ignore_index=True)