Формат файла Excel, экспортированного из веб-приложения, бесполезен. Необходимо выполнить над ним различные операции, чтобы сделать его пригодным в качестве фрейма данных. Из bubble.io файл Excel будет загружен пользователем, обработан в корзине Amazon s3 с использованием лямбда-функции, которая удаляет пару пустых строк вверху (но мне нужны некоторые значения ячеек), добавляет столбцы и перемещает некоторые столбцы, чтобы стать дальнейшие строки дальше по таблице, прежде чем он будет возвращен в виде файла csv с помощью пузырька для добавления в качестве нового типа данных (сбивающая с толку терминология для таблицы, которую использует bubble.io)
В конечном итоге мне нужно использовать pandas для преобразования этого файла Excel...
... к этому (но как фрейм данных я могу экспортировать в файл Excel или CSV)
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Как только вы прочитаете файл Excel как фрейм данных pandas, вы можете использовать stack
, чтобы получить ожидаемый результат.
Предполагая, что этот фрейм данных является входными:
data = {
("01/01/2024", "a"): [1, 2, 3],
("01/01/2024", "b"): [4, 5, 6],
("01/01/2024", "c"): [7, 8, 9],
("02/01/2024", "a"): [10, 11, 12],
("02/01/2024", "b"): [13, 14, 15],
("02/01/2024", "c"): [16, 17, 18],
}
index = ["A", "B", "C"]
df = pd.DataFrame(data, index=index)
01/01/2024 02/01/2024
a b c a b c
A 1 4 7 10 13 16
B 2 5 8 11 14 17
C 3 6 9 12 15 18
Используйте stack
, затем сбросьте индекс и отсортируйте значения в нужном порядке:
df = df.stack(level=0).reset_index(names=["ID", "date"]).sort_values(["date", "ID"])
ID date a b c
0 A 01/01/2024 1 4 7
2 B 01/01/2024 2 5 8
4 C 01/01/2024 3 6 9
1 A 02/01/2024 10 13 16
3 B 02/01/2024 11 14 17
5 C 02/01/2024 12 15 18
Хорошо, и что ты уже сделал? Где ты застрял? (Панды также могут плохо подходить для первоначальной обработки; посмотрите непосредственно на использование
openpyxl
.)