Pandas 모드='a', if_sheet_model='model'이(가) 작동하지 않습니다.
아래 코드를 사용하더라도 .xlsx 파일의 각 시트에 있는 내용은 추가되지 않고 덮어씁니다.무엇이 누락되었습니까?
writer = pd.ExcelWriter(excelfilepath, engine='openpyxl', mode='a', if_sheet_exists='overlay')
df1.to_excel(writer, sheet_name='Núcleo de TRIAGEM')
df2.to_excel(writer, sheet_name='Núcleo de FALÊNCIAS')
df3.to_excel(writer, sheet_name='RE - Triagem')
df4.to_excel(writer, sheet_name='RE - Falências')
writer.save()
저는 이것이 전형적이지 않다는 것을 압니다, 그리고 아마도 미래의 팬더 버전에서 고쳐질 것입니다, 하지만 사용합니다.startrow
버전이 있는1.4.2
저를 위해 일했습니다.다음 코드를 사용해 보십시오.
writer = pd.ExcelWriter(excelfilepath, engine='openpyxl', mode='a', if_sheet_exists='overlay')
df1.to_excel(writer, sheet_name='Núcleo de TRIAGEM', startrow=writer.sheets['Núcleo de TRIAGEM'].max_row, header=None)
df2.to_excel(writer, sheet_name='Núcleo de FALÊNCIAS', startrow=writer.sheets['Núcleo de FALÊNCIAS'].max_row, header=None)
df3.to_excel(writer, sheet_name='RE - Triagem', startrow=writer.sheets['RE - Triagem'].max_row, header=None)
df4.to_excel(writer, sheet_name='RE - Falências', startrow=writer.sheets['RE - Falências'].max_row, header=None)
writer.save()
미래의 모든 사람들을 위해.Pandas 버전을 확인하십시오.if_sheet_exists='overlay'
작동하지 않습니다.그것은 버전 1.4.0에서 판다에 추가되었습니다.업데이트를 시도해 보십시오.
분실된 것이 아무것도 없다.오버레이 옵션의 목적은 기존 데이터를 덮어쓰고 그 아래에 새 데이터를 추가하는 것이 아닙니다.
이전 데이터는 실제로 현재 작성 중인 새 데이터보다 큰 부분에 대해서만 유지됩니다. 또는 시작 행을 그 아래에 새 데이터를 쓸 수 있을 정도로 높은 값으로 명시적으로 설정하는 경우에만 유지됩니다.
이미 제안한 대로 다음과 같이 수행할 수 있습니다.
df1.to_excel(writer, sheet_name='sheet1', startrow=writer.sheets['sheet1'].max_row, header=None)
이 모든 것은 해당 옵션에 대해 제안된 초기 이름이 오버레이가 아닌 overwrite_cells임을 알 때 더욱 분명해집니다.
저는 제 버전의 판다를 업그레이드함으로써 이것을 고칠 수 있었습니다.
먼저 판다 버전을 확인해야 합니다.이 작업을 수행할 수 있습니다.
print(pandas.__version__)
저 같은 경우에는 판다 1.3.5를 사용했습니다.나는 그 다음에 달렸습니다.
pip install --upgrade pandas
그런 다음 이전 버전을 제거하고 새 버전을 설치합니다.또한, 제가 이것을 실행했을 때 이것은 작동하지 않았습니다.sudo
또는 admin 사용자.
우리는 유틸리티 기능을 만들어 excel로 쓸 수 있습니다.
def save_excel_sheet(df, excel_path, sheet_name):
if not os.path.exists(excel_path):
df.to_excel(excel_path, sheet_name=sheet_name, index=False)
else:
with pd.ExcelWriter(excel_path, engine='openpyxl', if_sheet_exists='overlay', mode='a') as writer:
df.to_excel(writer, sheet_name=sheet_name, startrow=writer.sheets[sheet_name].max_row, header=None, index=False)
그리고 아래와 같은 함수를 호출합니다.
save_excel_sheet(df1, excel_path, sheet_name='Núcleo de TRIAGEM')
save_excel_sheet(df3, excel_path, sheet_name='RE - Triagem')
파일이 없는 경우 파일을 만들고 파일이 있는 경우 제공된 시트에 추가합니다.
판다 버전 - 2.0.2
언급URL : https://stackoverflow.com/questions/71483123/pandas-mode-a-if-sheet-exists-overlay-not-working
'programing' 카테고리의 다른 글
각 목록 항목 뒤에 이미지 삽입 (0) | 2023.08.22 |
---|---|
도커 컴포지업을 사용해야 합니까, 아니면 실행해야 합니까? (0) | 2023.08.22 |
C에서의 반사 지원 (0) | 2023.08.22 |
맨 레포를 업데이트하려면 어떻게 해야 합니까? (0) | 2023.08.17 |
C 헤더 문제: #include 및 "정의되지 않은 참조" (0) | 2023.08.17 |