Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.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,我有一个巨大的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的熊猫 df = pd.read_

我有一个巨大的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的熊猫

df = pd.read_csv('yourfile.csv', sep='joursep', header=0)  

使用标头为0的熊猫

df = pd.read_csv('yourfile.csv', sep='joursep', header=0)  

要点是:要删除文件开头的一行。这意味着您需要将标题后面的完整内容移到前面,这反过来意味着复制整个文件

但是,当我们谈论10GB文件时,这当然太昂贵了

在您的情况下,我建议读取前两行,存储其大小,打开文件进行读/写而不创建(因此不会发生截断),将第二行(!)写在文件开头,并在其中填充尽可能多的空格以覆盖原始的第一行和第二行

通过这种方式,您可以用一个很长的行覆盖前两行,该行在语义上仅包含来自第二行(第一行数据)的数据,在语法上仅包含一些额外的尾随空格(在CSV文件中通常不会造成伤害)

我的输入,此处显示为点的空格:

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
我的输出,此处显示为点的空格:

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

要点是:要删除文件开头的一行。这意味着您需要将标题后面的完整内容移到前面,这反过来意味着复制整个文件

但是,当我们谈论10GB文件时,这当然太昂贵了

在您的情况下,我建议读取前两行,存储其大小,打开文件进行读/写而不创建(因此不会发生截断),将第二行(!)写在文件开头,并在其中填充尽可能多的空格以覆盖原始的第一行和第二行

通过这种方式,您可以用一个很长的行覆盖前两行,该行在语义上仅包含来自第二行(第一行数据)的数据,在语法上仅包含一些额外的尾随空格(在CSV文件中通常不会造成伤害)

我的输入,此处显示为点的空格:

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
我的输出,此处显示为点的空格:

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

为什么要逐行复制10GB的文件?删除标题并使用新名称存储它。。。。。!!!为什么要使用python
sed
可以很容易地做到这一点。如果您真的想使用Python和csv,最好根据您的需要使用Pandas,使用simple
sed-i'1d'test.csv
。您只能覆盖整个文件,这意味着将内容加载到内存中。
sed-i
真的只是重置文件的起始位置吗?或者,它实际上是将整个文件复制到位,并将第一行“上移”到文件的开头(与OP的解决方案相比,不会在处理过程中产生任何实质性的节省)。为什么要逐行复制10 GB的文件?删除标题并使用新名称存储它。。。。。!!!为什么要使用python
sed
可以很容易地做到这一点。如果您真的想使用Python和csv,最好根据您的需要使用Pandas,使用simple
sed-i'1d'test.csv
。您只能覆盖整个文件,这意味着将内容加载到内存中。
sed-i
真的只是重置文件的起始位置吗?或者,它实际上是将整个文件复制到位,将第一行“上移”到文件的开头(与OP的解决方案相比,不会在处理过程中产生任何实质性的节省)。我认为OP试图避免将所有10 GB加载到内存中。此外,您希望
skiprows=1
,不是
header=0
我认为OP试图避免将所有10GB加载到内存中。另外,您希望
skiprows=1
,而不是
header=0