如何删除csv文件中已经迭代的行



我有一个有100条记录的csv文件。我想写前50条记录在一个新的csv文件,即'newFile.csv'在第一次迭代。在第二次迭代中,我想在从原始csv文件中读取下一个50条记录后,在'newFile.csv'文件中写入下一个50条记录。

我能够执行第一次迭代,但无法使用期望值执行第二次迭代,因为接下来的50行必须写入csv文件中。有人能帮帮我吗??谢谢你

代码

import pandas as pd
oldData = pd.read_csv('oldFile.csv') # Has 100 rows
for i in range(2):
    newData = pd.read_csv('oldFile.csv', nrows=50) # Has 50 rows
    newCsv = newData.to_csv('newFile.csv', index=False)
    newData = newData.iloc[50:] # Removes those 50 rows
    
import pandas as pd
oldData = pd.read_csv('oldFile.csv') # Has 100 rows
for newData in pd.read_csv('oldFile.csv', chunksize=50) # Has 50 rows:
    newCsv = newData.to_csv('newFile.csv', index=False)
    newData = newData.iloc[50:] # Removes those 50 rows

以这种方式,每次读取.csv文件时,它包含50行。第一次迭代前50行,第二次迭代从51到101行,依此类推。

您可以以50行为块读取oldFile.csv,然后单独处理每个块,例如

import pandas as pd
nRows=50
with pd.read_csv('oldFile.csv', chunksize=nRows, header=None) as reader:
    for chunk in reader:
        print(chunk)
        chunk.to_csv('newFile.csv', index=False, header=None) 

注意newFile.csv在每次迭代中都被覆盖。

最新更新