【问题标题】:How to combine multiple excel worksheets into a single Pandas Dataframe with sheet name as the first column and row number as the second column如何将多个excel工作表组合成一个Pandas Dataframe,表名作为第一列,行号作为第二列
【发布时间】:2021-11-22 17:45:43
【问题描述】:

我有一个 Excel 工作簿,其中包含 20 多个不同工作表名称的工作表,例如sheet1、abc、xyz 等。我想将所有工作表导入一个 DataFrame,并将工作表名称作为第一列,将每张工作表的行号作为第二列。

预期的结果会是这样的:

Sheet Row Column1 Column2 ...ColumnN
sheet1 1 data data data
sheet1 2 data data data
sheet1 3 data data data
sheet1 4 data data data
abc 1 data data data
abc 2 data data data
abc 3 data data data
xyz 1 data data data
xyz 2 data data data
... ... data data data

【问题讨论】:

  • 你尝试过什么吗?什么没用?这个网站上已经有很多问题描述了 1)从 excel 读取,2)为列分配值,以及 3)连接数据框
  • 谢谢。我已经通过修改 asongtoruin 完成,2017 年 6 月 14 日 15:46 回答,stackoverflow.com/questions/44549110/…

标签: python dataframe worksheet


【解决方案1】:

我已经修改了 asongtoruin 的代码,2017 年 6 月 14 日 15:46 回答,Python Loop through Excel sheets, place into one df

import pandas as pd
pd.set_option("display.max_rows", None, "display.max_columns", None) #T: Print an entire pandas DataFrame. Source: Kite, retrieved on 29 Sep 2021, https://www.kite.com/python/answers/how-to-print-an-entire-pandas-dataframe-in-python

vstPathFile = r"D:\.......\filename.xlsm"

sheets_dict = pd.read_excel(vstPathFile, sheet_name=None, header=None)

full_table = pd.DataFrame()
for name, sheet in sheets_dict.items():
    sheet.insert(loc=0, column="Sheet", value=name, allow_duplicates=True)
    sheet.insert(loc=1, column="Row", value=sheet.index+1, allow_duplicates=True)
    full_table = full_table.append(sheet)

full_table.reset_index(inplace=True, drop=True)

【讨论】:

    猜你喜欢
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    相关资源
    最近更新 更多