Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15

Работа с Excel, Python, Pandas

25.03.2021, 16:46. Показов 3423. Ответов 6

Студворк — интернет-сервис помощи студентам
Привет всем кто решится помочь, такая проблема ,стоит задача сформировать файл Excel , если он уже сформирован , то создать страницу и записать на нее data_frame, его содержание меняется с каждой итерацией , и запись data_frame с новым содержанием должна быть на новой странице в том же файле Excel, с сохранением предыдущих страниц, которые содержат результат прошлых итераций - то есть в конце концов я должен иметь файл Excel со страницами в которых записаны data_frame всех итераций, количество итераций зависит от временных интервалов.Задается начало 0секунд и конец 6 секунд , шаг 2 секунды,6/2 =3 - количество итераций , таким образом у меня должно быть : 1 файл Excel с 3 страницами , в каждой из которых записан data_frame, содержание которых зависит от данной итерации
Вот часть кода на данный момент , которая требует доработки:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
fname, _ = QFileDialog.getSaveFileName(self, 'Save', self.fname, "*.xlsx")
            if not fname: return
            self.fname = fname #Тут  создаю фаил и определяю имя файла
.
.
.
.
.
.
.
.
.
self.res = {self.tables_list[i]: self.my_massive[i] for i in range(len(self.tables_list))}
                    # Создаем фрейм - таблицу  из полученных словарей.
                    data_frame = pd.DataFrame(self.res)
                    # Добавляем колонку None для удобного восприятия результатов.
                    data_frame[None] = self.tables_list
                    # Получаем доступ к колонкам фрейма для того , чтобы перенести новый столбец в начало
                    cols = data_frame.columns.tolist()
                    # Перемещаем стобец None из конца в начало.
                    cols = cols[-1:] + cols[:-1]
                    data_frame = data_frame[cols]
                    print(data_frame)
                    
                    try:
                        wb = openpyxl.load_workbook(self.fname)
 
                    except:
                        wb = openpyxl.Workbook()
 
                        # Удаление листа, создаваемого по умолчанию, при создании документа
                        for sheet_name in wb.sheetnames:
                            sheet = wb.get_sheet_by_name(sheet_name)
                            wb.remove_sheet(sheet)
 
               #Создание нового листа, названия новых листов будут инкрементироваться: Страница, Страница1, Страница2, и т.п.
                    ws = wb.create_sheet('Страница')
# Хочу записать на только что созданную страницу содержание data_frame
                    writer = pd.ExcelWriter(self.fname, engine='xlsxwriter')
                    data_frame.to_excel(writer, index=False)
                    
                    
                    
 
                    from openpyxl.writer.excel import save_workbook
                    save_workbook(wb, self.fname)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2021, 16:46
Ответы с готовыми решениями:

Python в Excel Pandas
Имеется лист Excel,но на нем кроме таблицы идут данные, которые тоже надо считать. Подскажите, как мне считать лист в excel и сделать там...

Excel > Sqlite на Python в Visual Studio ошибка ModuleNotFoundError: No module named 'pandas'
Добрый день, Учу C#, пользуюсь Visual Studio 2019 Сейчас есть задача импортировать таблицу в Sqlite - на C# пока совсем не...

Python работа с excel
Добрый день ! Помогите пожалуйста ! Есть код который работает и правильно отрабатывает свою задачу(открытие xlsx файлов и запись...

6
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
26.03.2021, 09:22
Один вопрос - одна тема. За вас всю работу тут никто делать не будет.
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
27.03.2021, 17:35  [ТС]
Вы правы , работаю, но прошу помочь , изучив документацию openpyxl, внес исправления в код , теперь страницы создает и записывает, но записывает все на первую страницу , не могу понять почему, помогите советом )
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
      
                   
                   
                    try:
                        wb = openpyxl.load_workbook(self.fname)
 
                    except:
                        wb = openpyxl.Workbook()
 
                        # Удаление листа, создаваемого по умолчанию, при создании документа
                        for sheet_name in wb.sheetnames:
                            sheet = wb.get_sheet_by_name(sheet_name)
                            wb.remove_sheet(sheet)
                    #Создаю новую страницу
                    ws = wb.create_sheet('Sheet')
                    #Делаю ее активной
                    ws = wb.active
                    #Записываю фрейм
                    for r in dataframe_to_rows(data_frame, index=False, header=True):
                        ws.append(r)
                    #Сохраняю
                    from openpyxl.writer.excel import save_workbook
                    save_workbook(wb, self.fname)
Вложения
Тип файла: xlsx xcv.xlsx (8.9 Кб, 10 просмотров)
0
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
27.03.2021, 19:56
LEBOMit, попробуй так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import openpyxl 
import pandas as pd
df = pd.read_excel('xcv.xlsx', sheet_name='Sheet')
df1 = df.iloc[:14]
df2 = df.iloc[15:29]
df3 = df.iloc[30:44]
 
 
with pd.ExcelWriter('xcv2.xlsx', engine='openpyxl', mode='a') as writer:
    df1.to_excel(writer, index=False)
writer.save()
with pd.ExcelWriter('xcv2.xlsx', engine='openpyxl', mode='a') as writer:
    df2.to_excel(writer, index=False)
writer.save()
with pd.ExcelWriter('xcv2.xlsx', engine='openpyxl', mode='a') as writer:
    df3.to_excel(writer, index=False)
writer.save()
тут я просто "считал" данные с твоего файла и перезаписал в новый
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
28.03.2021, 11:13  [ТС]
Спасибо, это классно , но не совсем то, что мне нужно , у меня нет мыслей по поводу того , почему мой фреймы все записываются в первую страницу книги, работаю дальше
0
0 / 0 / 0
Регистрация: 05.10.2020
Сообщений: 15
28.03.2021, 11:22  [ТС]
Парни , решил проблему следующим образом
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
                    try:
                        wb = openpyxl.load_workbook(self.fname)
 
                    except:
                        wb = openpyxl.Workbook()
 
                        # Удаление листа, создаваемого по умолчанию, при создании документа
                        for sheet_name in wb.sheetnames:
                            sheet = wb.get_sheet_by_name(sheet_name)
                            wb.remove_sheet(sheet)
                    #Создаю новую страницу
                    ws = wb.create_sheet('Sheet')
 
                    #Записываю фрейм
                    for r in dataframe_to_rows(data_frame, index=False, header=True):
                        ws.append(r)
 
                    #Сохраняю
                    from openpyxl.writer.excel import save_workbook
                    save_workbook(wb, self.fname)
Убрал ws = wb.active - т.к при повторе цикла активной становилась 1 страница
Вложения
Тип файла: xlsx книга 1.xlsx (9.3 Кб, 0 просмотров)
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
28.03.2021, 11:25
Цитата Сообщение от LEBOMit Посмотреть сообщение
почему мой фреймы все записываются в первую страницу книги
потому, что в коде так и написано - создать один лист и всего все писать. Для записи в другой лист - создайте его и пишите в него.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2021, 11:25
Помогаю со студенческими работами здесь

Python работа с Excel
Всем привет! Такая задача на питоне: вывести данные из таблицы эксель с условиями. id вводится пользователем, если id есть в таблице,...

Работа Python совместно с Excel
Не знаю, правильно ли выбрал раздел форума. Решил подружить python с excel. Набрел на сайт...

Excel Работа с гиперссылкой на Python
Уважаемые программисты на Python, Весь интернет проштудировал, и вот вопрос, ещё не придумали скрипт работа на Exel с гиперссылкой? цель...

Работа с Excel на Python (создание магазина)
Здравствуйте! 5 дней назад только начал изучать питон.Дали задание: написать нечто вроде магазина.Привожу полный текст. ...

Python pandas
Всем привет! Подскажите пожалуйста, как разделить слова в столбце? Спасибо большое. import pandas as pd import html5lib...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru