도전 과제:
새 데이터 프레임을 시트 끝에 추가 기존 Excel 시트를 덮어쓰지 않고 기존 Excel 시트 data.
해결책:
Pandas 버전 1.4.0 이전에는 기존 Excel 시트에 추가할 때 새 데이터의 인덱스를 기존 시트와 수동으로 일치시키는 작업이 포함되었습니다. 다시 저장합니다.
Pandas를 위한 향상된 솔루션 >= 1.4.0:
Pandas 1.4.0 이상 버전에는 ExcelWriter 함수에 기존 내용을 덮어쓰지 않고 기존 시트에 추가할 수 있는 "오버레이" 옵션이 포함되어 있습니다.
appended_data.to_excel(os.path.join(newpath, 'master_data.xlsx'), sheet_name='Sheet1', mode='a', if_sheet_exists='overlay')
Pandas를 위한 대체 솔루션 < 1.4.0:
def append_df_to_excel(filename, df, sheet_name='Sheet1', startrow=None, **to_excel_kwargs): """ Append a DataFrame [df] to existing Excel file [filename] into [sheet_name] Sheet. If [filename] doesn't exist, then this function will create it. """ writer = pd.ExcelWriter(filename, engine='openpyxl', mode='a') if sheet_name in writer.book.sheetnames: # try to open an existing workbook writer.book = load_workbook(filename) # truncate sheet if startrow is None and sheet_name in writer.book.sheetnames: startrow = writer.book[sheet_name].max_row # index of [sheet_name] sheet idx = writer.book.sheetnames.index(sheet_name) # remove [sheet_name] writer.book.remove(writer.book.worksheets[idx]) # create an empty sheet [sheet_name] using old index writer.book.create_sheet(sheet_name, idx) # copy existing sheets writer.sheets = {ws.title: ws for ws in writer.book.worksheets} else: # file doesn't exist, we are creating a new one startrow = 0 # write out the DataFrame to an ExcelWriter df.to_excel(writer, sheet_name=sheet_name, **to_excel_kwargs) writer.close() writer.save() appended_data.to_excel(os.path.join(newpath, 'master_data.xlsx'), sheet_name='Sheet1', mode='a', if_sheet_exists='overlay')
예:
import pandas as pd # Existing data existing_df = pd.DataFrame({ 'Name': ['John', 'Mary', 'Bob'], 'Age': [20, 25, 30] }) # New data to append new_df = pd.DataFrame({ 'Name': ['Alice', 'Tom'], 'Age': [35, 40] }) append_df_to_excel('master_data.xlsx', new_df, sheet_name='Sheet1', startrow=existing_df.shape[0] + 1)
추가 고려 사항:
위 내용은 데이터를 덮어쓰지 않고 기존 Excel 시트에 Pandas DataFrame을 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!