使用Python从多个CSV文件中删除行

使用Python从多个CSV文件中删除行,python,pandas,csv,numpy,data-manipulation,Python,Pandas,Csv,Numpy,Data Manipulation,我想从每个csv中删除特定的行。我的目录中的文件(即从第0行到第33行),但我有224个单独的csv。需要完成的文件。如果您能帮助我如何使用一个代码来执行此操作,我将非常高兴。这是两个独立任务的简单组合 首先,您需要循环浏览文件夹中的所有csv文件。请参阅以了解如何做到这一点 接下来,在该循环中,对于每个文件,您需要通过删除行来修改csv。有关如何读取csv、写入csv以及根据条件省略某些行的信息,请参阅 最后一个方面是您希望省略某些行号。一个很好的方法是使用枚举函数 这样的代码会给你行号 im

我想从每个csv中删除特定的行。我的目录中的文件(即从第0行到第33行),但我有224个单独的csv。需要完成的文件。如果您能帮助我如何使用一个代码来执行此操作,我将非常高兴。

这是两个独立任务的简单组合

首先,您需要循环浏览文件夹中的所有csv文件。请参阅以了解如何做到这一点

接下来,在该循环中,对于每个文件,您需要通过删除行来修改csv。有关如何读取csv、写入csv以及根据条件省略某些行的信息,请参阅

最后一个方面是您希望省略某些行号。一个很好的方法是使用枚举函数

这样的代码会给你行号

import csv
input = open('first.csv', 'r')
output = open('first_edit.csv', 'w')
writer = csv.writer(output)
for i, row in enumerate(input):
    if i > 33:
        writer.writerow(row)
input.close()
output.close()

这是两个独立任务的简单组合

首先,您需要循环浏览文件夹中的所有csv文件。请参阅以了解如何做到这一点

接下来,在该循环中,对于每个文件,您需要通过删除行来修改csv。有关如何读取csv、写入csv以及根据条件省略某些行的信息,请参阅

最后一个方面是您希望省略某些行号。一个很好的方法是使用枚举函数

这样的代码会给你行号

import csv
input = open('first.csv', 'r')
output = open('first_edit.csv', 'w')
writer = csv.writer(output)
for i, row in enumerate(input):
    if i > 33:
        writer.writerow(row)
input.close()
output.close()

我想你可以使用glob和pandas来很容易地做到这一点,我不确定你是否想在你的原始文件上写一些我从未推荐过的东西,所以要小心,因为这段代码可以做到这一点

import os
import glob
import pandas as pd

os.chdir(r'yourdir')
allFiles = glob.glob("*.csv") # match your csvs
for file in allFiles:
   df = pd.read_csv(file)
   df = df.iloc[33:,] # read from row 34 onwards.
   df.to_csv(file)
   print(f"{file} has removed rows 0-33")

或者类似的东西

我认为您可以使用glob和pandas轻松地完成这项工作,我不确定您是否希望在原始文件上编写我从未推荐过的内容,因此请小心,因为这段代码可以做到这一点

import os
import glob
import pandas as pd

os.chdir(r'yourdir')
allFiles = glob.glob("*.csv") # match your csvs
for file in allFiles:
   df = pd.read_csv(file)
   df = df.iloc[33:,] # read from row 34 onwards.
   df.to_csv(file)
   print(f"{file} has removed rows 0-33")

或者类似的东西

迭代CSV文件并使用Pandas删除每个文件的前34行,然后将其保存到输出目录

安装
pandas
后尝试此代码:

from pathlib import Path
import pandas as pd

source_dir = Path('path/to/source/directory')
output_dir = Path('path/to/output/directory')

for file in source_dir.glob('*.csv'):
    df = pd.read_csv(file)
    df.drop(df.head(34).index, inplace=True)
    df.to_csv(output_dir.joinpath(file.name), index=False)


迭代CSV文件并使用Pandas删除每个文件的前34行,然后将其保存到输出目录

安装
pandas
后尝试此代码:

from pathlib import Path
import pandas as pd

source_dir = Path('path/to/source/directory')
output_dir = Path('path/to/output/directory')

for file in source_dir.glob('*.csv'):
    df = pd.read_csv(file)
    df.drop(df.head(34).index, inplace=True)
    df.to_csv(output_dir.joinpath(file.name), index=False)


您必须将文件中的所有行读取到内存中,删除所选行并将所有行写回文件。如果您为一个文件名创建函数,则可以使用
os.listdir()
获取目录中所有文件的名称,并对每个文件名使用您的函数。是否要重写原始文件?必须将文件中的所有行读取到内存中,删除选定行,然后将所有行写回文件。如果为一个文件名创建函数,则可以使用
os.listdir()
获取目录中所有文件的名称,并对每个文件名使用函数。是否要重写原始文件?