使用python删除大型csv文件的前两行
我想用python删除一个巨大的csv文件(3GB)的头和第一行,性能很好使用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
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执行?