Удаление строк из нескольких файлов CSV с помощью Python - PullRequest
0 голосов
/ 08 июля 2019

Я хотел удалить определенные строки из каждого CSV.файлы в моем каталоге (то есть от строки 0 до 33), но у меня есть 224 отдельных CSV.файлы, которые нужно сделать.Я был бы рад, если вы поможете мне, как я могу использовать один код для этого.

Ответы [ 3 ]

2 голосов
/ 08 июля 2019

Я думаю, что вы можете использовать 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")

или что-то в этом роде ..

0 голосов
/ 08 июля 2019

Перебирайте файлы 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)

0 голосов
/ 08 июля 2019

Это простая комбинация двух отдельных задач.

Во-первых, вам нужно перебрать все CSV-файлы в папке. См. этот ответ StackOverflow о том, как это сделать.

Затем, внутри этого цикла, для каждого файла вам нужно изменить 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()
...