【问题标题】:Delete first 'n' rows from csv file and keep header从 csv 文件中删除前 'n' 行并保留标题
【发布时间】:2020-05-13 11:44:23
【问题描述】:

好吧,我需要检查行数是否 >= '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 行。 顺便说一句,代码是循环的一部分

【问题讨论】:

  • 请用计算机可以理解的语言添加算法,即分享您的代码,或者至少是MRE

标签: python pandas csv dataframe


【解决方案1】:

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)

【讨论】:

  • 抱歉,我忘了添加该文件每分钟都在增长,我只需要读取最后 1.5k 行,并且使用“skiprows”它最终会过度增长
  • 谢谢,确实如此。我只需要将行 df = pd.read_csv(data,skiprows=range(lines-1500, lines-1)) 更改为 df = pd.read_csv('data.csv',skiprows=range(1, lines-1500))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 2023-03-08
  • 2014-10-15
  • 1970-01-01
相关资源
最近更新 更多