【问题标题】:pandas Combine Excel Spreadsheetspandas 结合 Excel 电子表格
【发布时间】:2018-06-16 08:51:27
【问题描述】:

我有一个带有许多选项卡的 Excel 工作簿。 每个选项卡都具有与所有其他选项卡相同的标题集。 我想将每个选项卡中的所有数据合并到一个数据框中(不重复每个选项卡的标题)。

到目前为止,我已经尝试过:

import pandas as pd
xl = pd.ExcelFile('file.xlsx')
df = xl.parse()

可以为解析参数使用一些意味着“所有电子表格”的东西吗? 或者这是错误的方法?

提前致谢!

更新:我试过了:

a=xl.sheet_names
b = pd.DataFrame()
for i in a:
    b.append(xl.parse(i))
b

但这不是“工作”。

【问题讨论】:

    标签: python excel


    【解决方案1】:

    这是一种方法——将所有工作表加载到数据帧字典中,然后将字典中的所有值连接到一个数据帧中。

    import pandas as pd
    

    将 sheetname 设置为 None 以便将所有工作表加载到数据框的字典中 并忽略索引以避免以后重叠值(请参阅@bunji 的评论)

    df = pd.read_excel('tmp.xlsx', sheet_name=None, index_col=None)
    

    然后连接所有数据帧

    cdf = pd.concat(df.values())
    
    print(cdf)
    

    【讨论】:

    • 这是一个很好的答案。只是一个快速的补充:你的数据帧的索引可能会有重叠的值,所以你应该在进行连接时忽略索引cdf = pd.concat(df.values(), ignore_index=True)
    • 像魅力一样工作!
    • TypeError: read_excel() got an unexpected keyword argument sheetname 在 Python 3.71 和 pandas 1.0.5 中
    • 看起来参数是sheet_name而不是sheetname
    • ignore_index=True 不再是pd.read_excel 的参数,而应该是index_col=None
    【解决方案2】:
    import pandas as pd  
    
    f = 'file.xlsx'
    df = pd.read_excel(f, sheet_name=None, ignore_index=True) 
    df2 = pd.concat(df, sort=True)
    
    df2.to_excel('merged.xlsx', 
                 engine='xlsxwriter', 
                 sheet_name=Merged,
                 header = True,
                 index=False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 2019-08-11
      • 1970-01-01
      • 2021-01-07
      • 2021-06-19
      • 1970-01-01
      相关资源
      最近更新 更多