我有一个Excel工作表,这是放在S3,我想读取Excel工作表的工作表名称。I have read excel sheet with aws wrangler using awswrangler.s3.read_excel(path)我如何使用AWS Wrangler using Python读取sheetnames?
from openpyxl import load_workbook
from pyxlsb import open_workbook
import awswrangler as wr
import os
import pandas as pd
s3_src = 's3://bucket/folder/workbook.xlsb'
filename = os.path.basename(s3_src)
wr.s3.download(path=s3_src, local_file=filename)
if filename.endswith('.xlsb'):
workbook = open_workbook(filename)
sheets = workbook.sheets
else:
workbook = load_workbook(filename)
sheets = workbook.sheetnames
# Load all sheets into an array of dataframes
dfs = [pd.read_excel(filename, sheet_name=s) for s in sheets]
# Or now that you have the sheet names, load using Wrangler
dfs = [wr.s3.read_excel(s3_src, sheet_name=s) for s in sheets]
3条答案
按热度按时间r7knjye21#
我不确定你能在牧马人,或者至少我还没有能够弄清楚。您可以使用Wrangler将工作表下载到临时文件中,然后使用pyxlsb/openpyxl(使用两者来覆盖所有格式):
您可以提取工作表的名称并将它们作为输入传递给执行提取的另一个进程。
djp7away2#
牧马人不支持这一点。Pandas可以,但是pandas不能很好地处理aws_lambda。
v64noz0r3#
根据 read_excel() 函数的***awswrangler***docs:
在pandas中:
sheet_name:str、int、list或None,默认为0
所以你可以试试这样的方法:
我目前在AWS Glue中面临着类似的问题,但还没有设法让它工作。