Я делаю здесь, как мне кажется, очень глупую ошибку, но подавляющее большинство из того, что я нашел в Интернете, говорит о чтении нескольких файлов в один фрейм данных или о выводе результатов в один файл, что здесь не является моей целью.
Цель : читать сотни файлов CSV, один за другим, фильтровать каждый и выводить результат в файл, используя имя исходного файла в файле вывода / результата (например, «Обработано _ <<em> исходный_файл> .csv * ") *, затем перейдите к следующему файлу в l oop, прочтите и отфильтруйте его, поместите результаты для этого в новый вывод / результат файл. и так далее.
Проблема : Я либо сталкиваюсь с проблемой, когда создается только один файл результатов (из последнего прочитанного файла в l oop), либо если я использую код ниже, прочитав различные страницы SO, я получаю ошибку недопустимого аргумента.
Ошибка : OSError: [Ошибка 22] недопустимый аргумент: 'c: / users / my Directory / sourceFiles \ Processed_ c: / users / my Directory / sourceFiles \ files1.csv '
Я знаю, что сейчас неправильно меняю имя l oop и переименование, но не могу понять как это сделать, не загружая ВСЕ мои csvs в один фрейм данных с помощью list & concat и выводя все в один файл результатов (что не является моей целью) --- я хочу вывести каждый файл результатов в отдельные файлы, которые имеют общее имя исходного файла.
в идеале, учитывая размер и количество файлов (700+ каждый 400 МБ), я скорее использую Pandas, поскольку это кажется более эффективным из того, что я узнал до сих пор.
import pandas as pd
import glob
import os
path = "c:/users/my Directory/"
csvFiles = glob.glob( path + "/sourceFiles/files*")
for files in csvFiles:
df = pd.read_csv(files, index_col=None, encoding='Latin-1', engine = 'python',
error_bad_lines = False)
df_f = df[df.iloc[:, 2] == "Office"]
filepath = os.path.join(path,'Processed_'+str(files)+'.csv')
df_f.to_csv(filepath)