首页 > 解决方案 > 从 csv 文件中删除前 'n' 行并保留标题

问题描述

好吧,我需要检查行数是否 >= 'x',如果为真,删除前 'n' 行

目前我将 csv 加载到 df,删除行并将其加载回来,但这不是很干净和有效的方法。你知道其他吗?

这是我所看到的人类语言的算法:

~~~~~~~~~~
if number_of_rows(file.csv) >= 3000:
   del(file.csv[1:1499]) # as first line is header, we wouldn't want to delete it*
~~~~~~~~~~

UPD:忘了补充,该文件每分钟都在增长,我只需要最后 1.5k 行。代码是循环的一部分

标签: pythonpandascsvdataframe

解决方案


IIUC,如果您确定文件将适合内存,则可以使用上下文管理器。

n = 25 # your line count.
with open('/path/to/your_file.csv') as f:
    data = f.readlines()
    lines = len(data)
    if lines >= n:

        df = pd.read_csv(data,skiprows=range((1, lines-1500)) #using range will keep your header.
    else:
        df = pd.read_csv(data)

推荐阅读