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