我有一个巨大的csv文件(大约10GB的数据),我想删除它的标题。
在此网站上搜索我找到了这个解决方案:
with open("test.csv",'r') as f, open("updated_test.csv",'w') as f1:
next(f) # skip header line
for line in f:
f1.write(line)
但这意味着要创建一个新的csv文件。 ¿有没有办法删除标题而不循环所有的csv行?
答案 0 :(得分:3)
你得到的一点是:你想删除文件开头的一行。直接向前这意味着您需要将标题后的完整内容移到前面,这反过来意味着复制整个文件。
但是当我们谈论10GB文件时,这当然太昂贵了。
在你的情况下,我建议阅读前两行,存储它们的大小,打开文件进行读/写而不创建(因此不会发生截断),在文件的开头写第二行(!)和用覆盖原始第一行和第二行所需的空格填充它。
这样你用一条非常长的行覆盖前两行,它在语义上只包含来自第二行(第一条数据行)的数据,并在语法上只包含一些额外的尾随空格(在CSV文件中不会正常损坏)
with open('a', 'rw+') as f:
headers = f.readline()
firstData = f.readline()
f.seek(0)
firstData = firstData[:-1] + ' ' * len(headers) + '\n'
f.write(firstData)
我的输入,空格在这里显示为点:
one.two.three.four.five
1.2.3.4.5
6.7.8.9.10
我的输出,空格在这里显示为点:
1.2.3.4.5........................
6.7.8.9.10
答案 1 :(得分:0)
将pandas与header = 0
一起使用df = pd.read_csv('yourfile.csv', sep='joursep', header=0)