pandas:通过“工作表”和索引将 Excel 拆分为工作表列表的最佳方式?

问题描述 投票:0回答:2

问题是:

我有一个包含许多工作表(“Sheet1”、“Sheet2...”)的文件,需要使用某些工作表(例如:“Sheet16”、“Sheet23”)或按工作表索引创建一个新文件,例如 0(第一个)、15、22、-1(最后一个)。 可以帮助我吗?

python pandas openpyxl
2个回答
1
投票

正如 Suraj 已经提到的,您可以使用

xlsxwriter
来达到预期的目标。这是一个稍微简单且更具交互性的方法来解决您的问题,使用
pandas

要从 Excel 文件中提取单个工作表,您可以使用

ExcelFile
pandas
属性。以下是将工作表提取为数据框的方法:

xls = pd.ExcelFile(filename)
target_sheets = ['Sheet16', 'Sheet23', 'Sheet32']

或者您可以将

target_sheets
设置为索引列表,例如
[16, 23, 32]

for sheet in target_sheets:
    if isinstance(sheet, int):
        sheet = xls.sheet_names[sheet]
    df = pd.read_excel(xls, sheet)
    print(df)

这将为您提供作为 pandas 数据框的各个工作表,您可以根据需要查看/修改。如果您想创建一个合并列出的工作表数量的单独 Excel 文件,您可以使用

pd.ExcelWriter
。这是一个例子:

writer = pd.ExcelWriter(outfile)

for sheet in target_sheets:
    if isinstance(sheet, int):
        sheet = xls.sheet_names[sheet]
    df = pd.read_excel(xls, sheet)
    print(df)
    df.to_excel(writer, sheet_name=sheet, index=False)
    
writer.save()

随意调整变量并确保包含

import pandas as pd


0
投票

正如 BigBen 在评论中提到的,你应该使用 xl 特定的库。

一种方法是使用 xlsxwriter,这样的代码可能适合您的用例:

import xlsxwriter

# Open org workbook
wb1 = xlsxwriter.Workbook('workbook.xlsx')
# Open the destination workbook
wb2 = xlsxwriter.Workbook('dest.xlsx')

# define the sheetnames that need to be copied
sheets = ["Sheet1", "Sheet2"]
for sheet in sheets:
   ws1 = wb1.get_sheet_by_name(sheet)
   # Create a new worksheet
   ws2 = wb2.add_worksheet(sheet)
   # Copy data
   ws2.copy_worksheet(ws1)

# Close the workbooks
wb_source.close()
wb_dest.close()

openpyxl也可以使用与上面示例类似的代码结构

© www.soinside.com 2019 - 2024. All rights reserved.