Python. Не обрабатываются дубликаты

Написал функцию, которая обрабатывает ежедневные выгрузки и дозаписывает нужные строки в общий файл. Но на этапе обработки дублей, ничего не происходит (функция внутри функции drop_dupl). В отдельности drop_dupl работает - если прогнать общий файл через нее дубли пропадают.

def neh_today_append():
'''
Функция не будет корректно работать для текущего месяца, если 
в словаре month_dict не будет правильно указана пара: имя-ключ месяца 
''' 
# Функция для обработки дублей - оставляет самую раннюю запись для каждого ЕМИАС, для каждого месяца
def drop_dupl(df):
    dfri = df.reset_index(drop=True)
    ind = list(dfri.copy().sort_values(by=['emiasid', 'number', 'date'], ascending=[True, True, True])[['emiasid', 'number']]
               .drop_duplicates().index)
    df_filtred = dfri[dfri.index.isin(ind)]
    return df_filtred

# Путь, текущая дата и словарь имя месяца - номер
month_dict = {
    #'november' : ['43962', 11],
    'december' : ['46472', 12]
    #'january' : ['48472', 1]
}
path = 'Z:\\pdn\\data\\emias_data\\xlsx\\'
today = '2023-01-26'#str(pd.Timestamp.today()).split()[0] #'2023-01-26'

# Список файлов, которые не смогут обработаться
list_nosave_files = []

for k, v in month_dict.items():

    try:
        # Шаблон поиска файла
        file_name = glob.glob(path + f'*{v[0]}000*{today}.xlsx')[0] 
    
        try:

            print(r'ФАЙЛ:', file_name)
            day_df = pd.read_excel(file_name, dtype={'emiasid': str})
            # Фильтруем нужных пациентов и отбрасываем ненужные колонки
            print('--Фильтрация прошла успешно')
            filt_df = day_df[day_df.contr_priem_group == 'Приём состоялся']
            columns_filter = ['emiasid', 'zapis_group', 'sdel_group', 'variant']
            filt_df = filt_df[columns_filter]

            # Находим значения для колонок month, number и добавляем соответствующие столбцы
            print('--Добавлены колонки с датой и именем выгрузки')
            filt_df = filt_df.assign(date = today, month = v[1], number = v[0])

            # Приводим дату к формату datetime
            filt_df['date'] = pd.to_datetime(filt_df['date'], format='%Y-%m-%d')


            #------------------------------------------------------------------------------------------------
            # Путь к папке с обработанными данными + считываем данные
            print('--Данные из папки neh успешно считаны')
            neh_path = r'Z:\pdn\data\neh'
            all_df = pd.read_excel(neh_path + '\\neh_all.xlsx', dtype={'emiasid': str})
            print(f'    Количество строк в neh_all.xlsx {all_df.shape[0]}')

            # Обрабатываем случай, когда файла на текущий месяц еще нет
            try:
                month_path = glob.glob(neh_path + f"\\*{k}*.xlsx")[0]
                month_df = pd.read_excel(month_path, dtype={'emiasid': str})
                print(f'    Количество строк в {k}.xlsx {month_df.shape[0]}')
            except:
                month_df = pd.DataFrame()
                print(f'    Новый файл {k}')

            # Добавляем новые данные 
            print('--Данные успешно обновлены')
            concat_all_df = pd.concat([all_df, filt_df], axis=0)
            print(f'    Количество строк в neh_all.xlsx после обновления {concat_all_df.shape[0]}')
            concat_month_df = pd.concat([month_df, filt_df], axis=0)
            print(f'    Количество строк в {k}.xlsx после обновления {concat_month_df.shape[0]}')

            # Фильтруем дубликаты
            print('--Дубликаты успешно обработанны')
            all_df_nodup = drop_dupl(concat_all_df)
            print(f'    Количество строк в neh_all.xlsx после обработки дубликатов {all_df_nodup.shape[0]}')
            month_df_nodup = drop_dupl(concat_month_df)
            print(f'    Количество строк в {k}.xlsx после обработки дубликатов {month_df_nodup.shape[0]}')

            # Сохраняем файлы 
            print(f'ФАЙЛ ДЛЯ МЕСЯЦА {k} УСПЕШНО СОХРАНЕН')
            month_df_nodup.to_excel(neh_path + f'\\neh_{k}_{today.replace("-", "")}.xlsx', index=False)
            all_df_nodup.to_excel(neh_path + '\\neh_all.xlsx', index=False)
            print('---------------------------------------------------------------------')

        except:

            list_nosave_files.append(file_name)
            print(f'!!!ОШИБКА!!!')
            print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
            continue
    
    except:
        
        print(f'!!!Для месяца {k} файл на текущую дату {today} не найден!!!')
        print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
        continue

# Выводим список не считанных файлов
if len(list_nosave_files) != 0:
    print(f'СПИСОК ФАЙЛОВ, КОТОРЫЕ НЕ СЧИТАЛИСЬ:')
    for fname in list_nosave_files:
        print(fname)
    print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')   
    
print('!!ЗАВЕРШЕНО!!')

введите сюда описание изображения


Ответы (0 шт):