#python #python-3.x #excel #pandas #pandas.excelwriter
#python #python-3.x #excel #pandas #pandas.excelwriter
Вопрос:
У меня есть такая функция:
def DuplicateEachRow():
import pandas as pd
import pathlib
full_path = str(pathlib.Path().absolute()) '\' new_loc
df = pd.read_excel(full_path, header=None, sheet_name='Sheet3')
print(df)
# duplicate the rows:
dup_df = pd.concat([df, df], ignore_index=True)
# using openpyxl
with pd.ExcelWriter(new_loc) as writer:
dup_df.to_excel(writer)
и мне нужно сохранить ту же функциональность, но вместо записи этого одного листа в новый файл. Мне нужно отредактировать этот конкретный лист и сохранить его обратно в мою книгу, в которой есть другие листы.
РЕДАКТИРОВАТЬ (более подробное объяснение): У меня есть 4 листа в книге и только на одном листе (Лист3) Мне нужно использовать описанную выше функциональность, а затем сохранить ее обратно в книгу.
Это тоже не работает, указывая имя листа при сохранении:
def DuplicateEachRow():
import pandas as pd
import pathlib
full_path = str(pathlib.Path().absolute()) '\' new_loc
df = pd.read_excel(full_path, header=None, sheet_name='GTL | GWL Disclosures')
print(df)
# duplicate the rows:
dup_df = pd.concat([df, df], ignore_index=True)
# using openpyxl
with pd.ExcelWriter(new_loc) as writer:
dup_df.to_excel(writer, sheet_name='GTL | GWL Disclosures')
Комментарии:
1. Попробуйте
pandas.DataFrame.to_excel()
, там вы можете определить лист2. Не могли бы вы привести пример того, как я буду использовать это в своем сценарии?
3. @mastercool Вы проверили документы?
4. Да, у меня есть, но я не могу заставить его работать правильно. Проверьте мое обновление
Ответ №1:
Чтобы добавить лист новостей в тот же Excel, вы должны открыть файл в режиме добавления. Взгляните на приведенный ниже код:
def DuplicateEachRow():
import pandas as pd
import pathlib
full_path = str(pathlib.Path().absolute()) '\' new_loc
df = pd.read_excel(full_path, header=None, sheet_name='GTL | GWL Disclosures')
print(df)
# duplicate the rows:
# keep the index, so you can sort the rows after
dup_df = pd.concat([df, df])
#sort the rows by the index so you have the duplicate one just after the initial one
dup_df.sort_index(inplace=True)
# using openpyxl
#open the file in append mode
with pd.ExcelWriter(new_loc, mode='a') as writer:
#use a new name for the new sheet
#don't save the header (dataframe columns names) and index (dataframe row names) in the new sheet
dup_df.to_excel(writer, sheet_name='Sheet3', header=None, index=None)