#python #excel #pandas #dataframe
#python #excel #панды #фрейм данных
Вопрос:
Я новичок в python и пытаюсь изменить форму таблицы из файла Excel, поскольку у меня несколько заголовков, я пытаюсь преобразовать первый заголовок в 2 отдельных столбца. я прилагаю здесь свой вывод кода и данные. Входная таблица
import pandas as pd
import numpy as nm
df = pd.read_excel(r'.test.xlsx', header=[0, 1])
df = (df.stack(0, dropna=False)
.rename_axis(index=('Customer','Date'), columns=None)
.reset_index())
df.to_csv(r'.testnew.csv',index=False)
print(df)
Желаемый результат —
Заказчик | Дата | Бюджет | Актуально | Сумма |
---|---|---|---|---|
Джон | 20 января | 100 | 50 | 0 |
Джон | 20 февраля | |||
Джон | 20 марта | |||
Крис | 20 января | 120 | 80 | 0 |
Крис | 20 февраля | 50 | 10 | 20 |
Крис | 20 марта | 50 | 45 |
Ответ №1:
Я считаю, что вам нужно DataFrame.stack
:
df = pd.read_excel(r'.test.xlsx', header=[0, 1])
df = (df.stack(0, dropna=False)
.rename_axis(index=('Customer','Date'), columns=None)
.reset_index())
Комментарии:
1. Не работая должным образом, он преобразовал первую строку в столбец, но выдает несколько столбцов с одинаковым именем столбца и пустыми строками. что-то вроде имени клиента, даты, фактического, фактического, Суммы1, Суммы2, Суммы3….
2. @Annie — Так это значит, что в названиях столбцов есть опечатки? Возможно ли использование
df = df.rename(columns=lambda x: x.lower())
послеdf = pd.read_excel(r'.test.xlsx', header=[0, 1])
?3. Я пытался использовать lower, но date не имеет меньшего значения, поэтому возникает ошибка. Я также прикрепил текущий вывод с отредактированным кодом в post. Пожалуйста, предложите @jezrael
4. @Annie — Как это изменить
df = pd.read_excel(r'.test.xlsx', header=[0, 1])
df = pd.read_excel(r'.test.xlsx', header=[0, 1], index_col=[0])
?5. Понял… Большое вам спасибо, сейчас все работает нормально.