【问题标题】:Excel and Python: Merge + Append multiple workbooks with multiple worksheetsExcel 和 Python:使用多个工作表合并 + 附加多个工作簿
【发布时间】:2020-07-24 13:34:17
【问题描述】:

我不完全确定从哪里开始这个项目,而且我所做的研究虽然有限,但我还没有找到正确的答案或可以使用的方法。

我有两个 Excel 工作簿,有多个工作表(选项卡)。我正在尝试将它们合并/附加到具有以下逻辑的单个 Excel 工作表中:

工作簿 A = 主工作表 工作簿 B = 辅助工作表 所有工作表中的 A 列都是“索引” - 日期时间格式

  • 打开一个
  • 打开 B
  • 对于 B 中的每个工作表,检查它是否存在于 A --- 如果确实存在,请检查以下内容: ------ 如果索引存在,则不添加 ------ 如果索引不存在,添加到工作表 --- 如果不存在,则在 A 中添加一个新的工作表
  • 保存工作表 A
  • 删除工作表 B(如果一切正常)

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    在评论我的逻辑之后,这是答案:

    import pandas as pd
    
    masterPath = 'data/TrainingData.xlsx'
    tempPath = 'data/WatchList - 2020-07-22 16-50.xlsx'
    
    masterBook = pd.ExcelWriter(masterPath, engine='openpyxl')
    tempBook = pd.ExcelWriter(tempPath, engine='openpyxl')
    
    masterSheetNames = pd.ExcelFile(masterPath).sheet_names
    tempSheetNames = pd.ExcelFile(tempPath).sheet_names
    
    for sheetName in tempSheetNames:
        if sheetName in masterSheetNames:
            df_m = pd.read_excel(masterBook,
                                 index_col=None,
                                 na_values=['NA'],
                                 sheet_name=sheetName)
            
            df_t = pd.read_excel(tempBook,
                                 index_col=None,
                                 na_values=['NA'],
                                 sheet_name=sheetName)
            df_t.reset_index(drop=True, inplace=True)
            df_m.reset_index(drop=True, inplace=True)
            
            df = pd.concat([df_m, df_t], axis = 0, ignore_index=True)
            df.drop_duplicates(subset=('Date'), keep='first', inplace=True)
            df.set_index('Date', inplace=True)
            
            df_t.to_excel(masterBook, sheet_name = sheetName)
            
        else:
            print(sheetName + ' will be added to Main doc')
            df_t = pd.read_excel(tempBook,
                                 index_col=None,
                                 na_values=['NA'],
                                 sheet_name=sheetName)
            df_t.drop_duplicates(subset=('Date'), keep='first', inplace=True)
            df_t.set_index('Date', inplace=True)
            df_t.to_excel(masterBook, sheet_name = sheetName)
    
    masterBook.save()
    masterBook.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-24
      相关资源
      最近更新 更多