Pandas открыть файл excel
Подскажите, как открыть файл 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
Каждая группа получила свой идентификатор. Теперь вы можете или создать мультииндекс, или группировать по нему.

