Pandas открыть файл excel

Рейтинг: 0Ответов: 1Опубликовано: 10.04.2023

Подскажите, как открыть файл excel, где в первом столбике разноуровневые данные, мне необходимо открыть его в pandas с такими же разными уровнями. Как это можно сделать?

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

Были следующие попытки:

pd.read_excel('May.xlsx', sheet_name='May', header=list(range(3)))
pd.read_excel('May.xlsx', sheet_name='May', header=list(range(3)), index_col=0)

Уровни отличаются между собой пробелами, но при прочтении файла пробелы убираются

Ответы

▲ 1Принят

На тестовом файле у меня получилось следующее:

test.xlsx

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

main.py
import pandas as pd
import numpy as np

df = pd.read_excel('test.xlsx', skiprows=[1, 2, 3])
# Берем из номенклатуры первые два символа и если это два пробела заменяем их на nan.
df['основной код'] = df['номенклатура'].str[0:2].replace('  ', np.nan)
# Заполняем не nan значения из столбца код.
df['основной код'].mask(df['основной код'].notna(), df['код'], inplace=True)
# Заполняем nan значения предыдущим действительным значением.
df['основной код'].fillna(method='ffill', inplace=True)
print(df)

-----------------------------

        номенклатура     код  количество  основной код
0                 Д4  123456           2        123456
1       Полуфабрикат  123460           2        123456
2          Заготовка  123464           2        123456
3              Днище  123468           2        123468
4              Днище  123472           4        123472
5       Полуфабрикат  123476           4        123472
6          Заготовка  123480           4        123472
7              Днище  123484           2        123484
8              Днище  123488           2        123484
9       Полуфабрикат  123492           2        123484
10         Заготовка  123496           2        123484
11             Днище  123500           4        123500
12      Полуфабрикат  123504           4        123500
13         Заготовка  123508           4        123500
14             Днище  123512           3        123512
15      Полуфабрикат  123516           3        123512
16         Заготовка  123520           3        123512

Каждая группа получила свой идентификатор. Теперь вы можете или создать мультииндекс, или группировать по нему.