Как я могу заставить фрейм данных перезаписать существующий excel в определенной ячейке с помощью python pandas?

Я написал ниже, что, похоже, не работает. Я определяю dataframe как d3, чтобы он был столбцом с 20 строками с комментарием «мой комментарий». Затем я пытаюсь добавить это в существующий сохраненный документ Excel в ячейке L2. Фрейм данных печатается и выглядит правильно в среде IDE, но просто не перезаписывается в Excel. любая помощь будет принята с благодарностью, так как я только начинаю с python!

from openpyxl import load_workbook
import pandas as pd
import xlsxwriter

#create dataframe to be 19 lines with comment "my comment"
comment = "my comment"
df3 = pd.DataFrame([comment]* 20)
print(df3)
wb = load_workbook(r'H:\myfile.xlsx')

writer = pd.ExcelWriter(r'H:\myfile', engine='xlsxwriter')
df3.to_excel(writer,sheet_name='mysheet', startrow = 2, startcol = 12)
wb.save(r'H:\myfile.xlsx')
print("done")

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
799
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Насколько я могу судить, вы делаете несколько вещей одновременно, которые сводят на нет эффект друг друга. Почему вы вообще используете openpyxl?

Вы загружаете книгу из файла excel с помощью openpyxl и load_workbook, затем вы переопределяете файл excel с помощью кадра данных pandas, и в этот момент результат должен быть таким, какой вы хотите. Но после этого вы снова переопределяете файл excel содержимым загруженной книги, которую вы загрузили до изменений, внесенных вами с помощью pandas, что восстанавливает файл excel в исходное состояние.

Избавьтесь от каждой строки, связанной с openpyxl, и это должно работать.

import pandas as pd
import xlsxwriter

#create dataframe to be 19 lines with comment "my comment"
comment = "my comment"
df3 = pd.DataFrame([comment]* 20)
print(df3)

writer = pd.ExcelWriter(r'H:\myfile', engine='xlsxwriter')
df3.to_excel(writer,sheet_name='mysheet', startrow = 2, startcol = 12)
print("done")

Если вы хотите изменить свой файл excel с помощью панд, вам не нужен openpyxl, если вы хотите изменить свой файл excel с помощью openpyxl, вам не нужны панды.

Большое спасибо, это имеет смысл. Я не понимал, что переопределяю изменения pandas с открытым pyxl, поэтому удалил это. Единственное, изменения, похоже, не перезаписывают Excel. Когда я также смотрю дату последнего изменения в своем Excel, она не обновляется...

rbose 21.12.2020 17:12

из документов: «обратите внимание, что создание объекта ExcelWriter с уже существующим именем файла приведет к удалению содержимого существующего файла»

так что да, вам нужен openpyxl или создайте все, что вы хотите видеть в файле внутри python.

Другие вопросы по теме