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

时间:2019-07-07 23:51:36

标签: python pandas csv numpy data-manipulation

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

3 个答案:

答案 0 :(得分:2)

我认为您可以使用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")

或类似的内容..

答案 1 :(得分:0)

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

首先,您需要遍历文件夹中的所有csv文件。有关具体操作,请参见this StackOverflow answer

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

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

这样的代码将为您提供行号。

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()

答案 2 :(得分:0)

遍历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)