Поиск и сортировка по датафреймам Pandas в запутанной таблице

имеется 2 таблицы exel выгнанные из базы 1C в стремном формате, требуется каким-то образом вычленить нужные данные и создать новый эксель только с ними.

Требуется достать все данные под HOWO В787НТ,HOWO Т488ЕТ, Sitrak О243КС. Проблема в том, что они разбросаны. Может быть надпись HOWO В787НТ и указаны 3 ячейки с весом, а чуть ниже еще такая же надпись допустим 1 ячейка, и плюсом во втором exel файле ровно та же история. Как автоматически все это объеденить в одну большую таблицу?.

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

Написал какой-то супер простенький код, который хотябы создает отдельную таблицу без лишней верхней информации В идеале надо сделать чтобы по нажатию, или даже просто каждые 24 часа приложение само скачивало с почты присланные 2-е таблицы от определенного человека, доставало все нужное, объеденяла и создавала эксель и пдф результата. За данную помощь могу заплатить, просто главное сделать, а то каждый день заниматься этим вычленение информации на протяжении пары лет как-то лень... Заранее спасибо. По этой ссылке можно скачать примеры этих exel таблиц: "https://drive.google.com/drive/folders/1V2eZAyibQFAAqHv3U08JIm-vgFqK6OJY?usp=drive_link"


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

Автор решения: strawdog

Вообще, сначала данные нужно готовить, а потом с ними работать. в вашем случае можно сделать так (первый файл из примера, ищем все вхождения MERCEDES №6 В616ХУ АЛМАЗ):

# читаем файл, пропускаем заголовки и последнюю строку
df = pd.read_excel("04-05.11 (1).xls", skiprows=10, skipfooter=1)
src_str = "MERCEDES №6 В616ХУ АЛМАЗ"

# меняем все порядковые номера после названия модели на это самое название
df.iloc[:,0] = df.iloc[:,0].mask(df.iloc[:,0].astype(str).str.isdigit()).ffill()
# убираем строки без данных
df = df.dropna(thresh=6)
# выбираем ряды, в которых название равно нашей строке
res = df[df.iloc[:,0]==src_str]

res:

                    Смена №2  Unnamed: 1 Unnamed: 2  Unnamed: 3  Unnamed: 4 Unnamed: 5  Unnamed: 6  3590.05
7   MERCEDES №6 В616ХУ АЛМАЗ         NaN   20:20:34         NaN       63.65   20:28:06       21.40    42.25
8   MERCEDES №6 В616ХУ АЛМАЗ         NaN   22:00:47         NaN       62.45   22:11:22       21.35    41.10
9   MERCEDES №6 В616ХУ АЛМАЗ         NaN   23:43:14         NaN       57.30   23:52:20       21.35    35.95
10  MERCEDES №6 В616ХУ АЛМАЗ         NaN    1:37:48         NaN       67.00    1:44:53       21.35    45.65
→ Ссылка