Как сохранить лист Excel в исходной книге?

#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)