【问题标题】:Concat df from different excel sheets in different excel files来自不同excel文件中不同excel工作表的Concat df
【发布时间】:2022-01-26 10:31:35
【问题描述】:

我想将多个 excel 文件中的某些 excel 工作表合并到一个数据框中。目前,我手动复制工作表(例如名为“11062021_sheet”、“180622_sheet”),将它们粘贴到一个新的 excel 文件中,将每个工作表命名为“Round X”并执行以下代码:

df1 = pd.read_excel(INPUT, sheet_name = 'Round 2')
df2 = pd.read_excel(INPUT, sheet_name = 'Round 3') 
df3 = pd.read_excel(INPUT, sheet_name = 'Round 4')
df4 = pd.read_excel(INPUT, sheet_name = 'Round 5')
df5 = pd.read_excel(INPUT, sheet_name = 'Round 6')
df6 = pd.read_excel(INPUT, sheet_name = 'Round 7')
df7 = pd.read_excel(INPUT, sheet_name = 'Round 8')
df8 = pd.read_excel(INPUT, sheet_name = 'Round 9')
df9 = pd.read_excel(INPUT, sheet_name = 'Round 10')
df10 = pd.read_excel(INPUT, sheet_name = 'Round 11')
df11 = pd.read_excel(INPUT, sheet_name = 'Round 12')

df = df0.append([df1,df2,df3,df4,df5,df6,df7,df8,df9,df10,df11], sort=False)

有人知道更快/更精简的替代方案吗? (例如,从该文件夹中的所有文件中取出所有名称为“11062021_sheet”,“180622_sheet”的工作表并将它们合并到一个列表中)

【问题讨论】:

    标签: python excel pandas append concatenation


    【解决方案1】:

    使用sheet_name = None 获取所有工作表名称,然后在字典理解中过滤它们:

    sheetnames = ['Round 2','Round 3',...'Round 12']
    
    dfs = pd.read_excel(INPUT, sheet_name = None)
    
    df = pd.concat({k: v for k, v in dfs.items() if k in sheetnames}).reset_index(drop=True)
    

    编辑:功能使用:

    def join_sheetnames(INPUT, sheetnames):
    
        dfs = pd.read_excel(INPUT, sheet_name = None)
        return (pd.concat({k: v for k, v in dfs.items() if k in sheetnames})
                  .reset_index(drop=True))
    
    L = ['Round 2','Round 3',...'Round 12']
    df = join_sheetnames('file.xlsx', L)
    

    编辑:如果有不同的文件名的excel文件:

    L1 = [('file.xlsx','Round 2'),('file1.xlsx','Round 3'),('file2.xlsx','Round 4')]
    df = pd.concat([pd.read_excel(i, sheet_name = s) for i, s in L1])
    

    【讨论】:

    • 谢谢!我怎样才能把它放到一个函数中?
    • @questionoverflow - 函数中的输入是什么?
    • 不应该是sheets输入和df输出?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    相关资源
    最近更新 更多