Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python删除大型csv文件的前两行_Python_Csv - Fatal编程技术网

使用python删除大型csv文件的前两行

使用python删除大型csv文件的前两行,python,csv,Python,Csv,我想用python删除一个巨大的csv文件(3GB)的头和第一行,性能很好 import csv import pandas as pd def remove2rows(csv_file): data = pd.read_csv(csv_file) data = data.iloc[1:] data.to_csv(csv_file, header=None, index=False) if __name__ == "__main__": remove2rows

我想用python删除一个巨大的csv文件(3GB)的头和第一行,性能很好

import csv
import pandas as pd

def remove2rows(csv_file):
    data = pd.read_csv(csv_file)
    data = data.iloc[1:]
    data.to_csv(csv_file, header=None, index=False)

if __name__ == "__main__":
    remove2rows(filename)

此脚本可以工作,但需要一些时间,可能是因为它读取整个文件,并将从第3行开始到文件末尾的每一行写入一个新的csv文件

有什么方法可以提高性能吗?

请注意,“从文件中删除行”的唯一方法是读取整个文件(但不一定一次读取全部xD)并将所选行写回新文件。文件就是这样工作的

但在这里不使用panda肯定会节省时间——panda是一种对表格数据进行计算的工具,而不是一个文件实用程序。使用stdlib的csv模块或更简单的纯文件功能(如果您101%确定您的csv不包含嵌入的换行符)可能会更高效,至少wrt/内存使用,并且可能wrt/原始性能

问题:删除大型csv文件的前两行

这个例子是这样的:
找到第二个换行符的偏移量,将文件位置更改为它,然后复制到文件的末尾

如果您获得任何改进的性能,请报告


参考

Change the file position to: 59
b'Data Line 1\nData Line 2\nData Line 3\n'
  • 返回找到子序列子序列的数据中的最低索引

  • 将文件位置更改为给定的字节偏移量

  • 将复制从当前文件位置到文件末尾的内容

输出

Change the file position to: 59
b'Data Line 1\nData Line 2\nData Line 3\n'

用Python测试:3.5

不是Python,但很可能更快:嗨,欢迎使用SO!堆栈溢出在这里帮助您处理通常不起作用的代码。如果您正在寻找要检查的代码,并且希望了解改进,请查看@彼得苏黎世是的,我也找到了这个网站。我试图在python中使用“sed”命令,
import subprocess def testing(filename):cmd=“sed-i”1d%s”%filename subprocess.call(cmd,shell=True)
错误消息:“sed”未被识别为内部或外部命令,可操作的程序或批处理文件。您是否确保已安装sed,并且可以从shell执行?