Если ваш фрейм данных имеет структуру, которая удовлетворяет требованиям для фрейма данных pandas:
import pandas as pd
import os
# Let '\DATA\\' be the directory where you keep your csv files, as a subdirectory of .getcwd()
PATH = os.getcwd()+'\DATA\\'
def my_function(source_folder):
for i, file_path in enumerate(os.listdir(PATH)):
df = pd.read_csv(PATH+file_path) # Use read_csv here, not DataFrame.
# You are still working with a filepath, not a dictionary.
mask = ( (df.Result == 1) | (df.Result.ffill() == 1) |
((df.Result.ffill() == 0) &
(df.groupby((df.Result.ffill() !=
df.Result.ffill().shift()).cumsum()).Result.transform('size') <= 100))
)
df = df[mask]
df = df.to_csv(PATH+'df_{}.csv'.format(i))
Вы должны предоставить образец данных, над которыми вы работаете, когда задаете вопрос, аналогичный этому, в целомправить.В противном случае полученные ответы могут не сработать.Пожалуйста, обновите вопрос с образцом файла dataframe / csv и имитацией содержимого каталога, чтобы я мог обновить этот ответ.
Если srcPath отличается от os.getcwd (), вам может потребоваться вычислить полный путь или путь относительно .getcwd () перед итерацией по файлам.
Кроме того,Вызов функции list () выше может не потребоваться, протестируйте код с ним или без него.
Наконец, почему вы требуете две переменные в качестве входных данных для my_function ()?Насколько я вижу, требуется только одна переменная - srcPath, вызываемая в .glob (), и эта переменная не передается в функцию, поэтому она должна быть глобальной переменной.
РЕДАКТИРОВАТЬ: Я обновил код выше на основе изменений к первоначальным вопросам, и комментарии к этому посту ниже.
РЕДАКТИРОВАТЬ 2: Оказывается, что вашвызов glob.glob () не выдал то, что вы хотели.Смотрите обновленный код.