Как заголовок превратить в столбец?
Есть несколько таблиц друг под другом, в каждой многоуровневый заголовок, в верхнем уровне указано название филиала. Как можно из каждой таблицы вытянуть это название и добавить столбец с названием филиала?
Код товара Наименование товаров Ед. Вес(кг) Филиал 1 Unnamed: 5
0 NaN NaN NaN NaN Продажи Остатки
1 1 Товар 1 шт 0,327 100 200
2 2 Товар 2 шт 0,328 309 71.43
3 NaN NaN NaN NaN NaN NaN
4 Код товара Наименование товаров Ед. Вес(кг) Филиал 2 NaN
5 NaN NaN NaN NaN Продажи Остатки
6 1 Товар 1 шт 0,327 300 400
7 2 Товар 2 шт 0,328 75 90
Вот так должно быть в готовом виде:
Код товара Ед. Вес Продажи Остатки Филиал
1 шт 0,327 100 200 Филиал 1
2 шт 0,328 309 71 Филиал 1
1 шт 0,327 300 400 Филиал 2
2 шт 0,328 75 90 Филиал 2
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
df = pd.read_excel(r'c:\test\Товары.xlsx', header=None) # важно - прочесть без заголовков
df['Филиал'] = df[4].where(df[4].str.startswith('Филиал'), None).ffill() # делаем столбец с названиями филиалов путем замены всех значений, не начинающихся на "Филиал", на None, с последующим их заполнением
df.columns = list(df.iloc[0, :4]) + ['Продажи', 'Остатки', 'Филиал'] # формируем названия столбцов
df = df[~df['Код товара'].eq('Код товара') & ~df['Код товара'].isna()].reset_index(drop=True) # удаляем заголовки и пустые строки из "тела" фрейма и переиндексируем
print(df)
Код товара Наименование товаров Ед. Вес(кг) Продажи Остатки Филиал
0 1 Товар 1 шт 0.327 100 200 Филиал 1
1 2 Товар 2 шт 0.328 309 71.43 Филиал 1
2 1 Товар 1 шт 0.327 300 400 Филиал 2
3 2 Товар 2 шт 0.328 75 90 Филиал 2