【问题标题】:Pandas loop through Excel sheets and append to dfPandas 循环遍历 Excel 工作表并附加到 df
【发布时间】:2019-04-06 19:28:32
【问题描述】:

我正在尝试遍历 Excel 工作表并将多个工作表中的数据附加到数据框中。

到目前为止我有:

master_df = pd.DataFrame()
for sheet in target_sheets:
    df1 = file.parse(sheet, skiprows=4) 
    master_df.append(df1, ignore_index=True)

但是当我调用master_df.head() 时,它返回__

这些工作表上的数据格式相同且相互关联。

所以我想像这样加入他们:

表 1 包含:

A1
B1
C1

表 2 包含:

A2
B2
C2

表 3:

A3
B3
C3

最终结果:

A1
B1
C1
A2
B2
C2
A3
B3
C3

我的逻辑是否正确,或者我该如何实现?

【问题讨论】:

    标签: python python-3.x pandas


    【解决方案1】:

    即使您不知道 Excel 文件中的确切 sheet_names,以下代码也可以使用。你可以试试这个:

    import pandas as pd
    
    xls = pd.ExcelFile('myexcel.xls')
    
    out_df = pd.DataFrame()
    
    for sheet in xls.sheet_names:
        df = pd.read_excel('myexcel.xls', sheet_name=sheet)
        out_df.append(df)  ## This will append rows of one dataframe to another(just like your expected output)
    
    print(out_df)
    
    ## out_df will have data from all the sheets
    

    如果这有帮助,请告诉我。

    【讨论】:

    • 谢谢你,它很有用,但我知道在这种情况下我想要的工作表名称。
    • 当然。我只是给了你一个更通用的解决方案,它不涉及任何工作表名称的硬编码。
    【解决方案2】:

    只需使用pd.concat():

    pd.concat([pd.read_excel(file, sheet_name=sheet) for sheet in ['Sheet1','Sheet2','Sheet3']], axis=1)
    

    例如,将产生:

       A1  B1  C1  A2  B2  C2  A3  B3  C3
    0   1   2   3   1   2   3   1   2   3
    1   4   5   6   4   5   6   4   5   6
    2   7   8   9   7   8   9   7   8   9
    

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 2021-09-12
      • 2014-10-28
      • 1970-01-01
      • 2013-08-17
      • 2020-04-05
      • 2014-11-15
      • 2013-11-08
      • 1970-01-01
      相关资源
      最近更新 更多