如何在python中删除csv头?

时间:2017-06-21 13:20:51

标签: python csv

我有一个巨大的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行?

2 个答案:

答案 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)