将包含多个标签页的xlsx文件使用pandas写入到S3

3

我有一个项目,需要将数据框写入到S3存储桶中的xlsx文件。通过以下方式使用pandas从S3加载文件非常简单:

df = pd.read_excel('s3://path/file.xlsx')

但是往S3中写入文件却给我带来了问题。

 import pandas as pd

 # Create a Pandas dataframe from the data.
 df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('s3://path/', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()

FileNotFoundError: [Errno 2] No such file or directory: 's3://path'

那么我该如何使用pandas将xlsx文件写入S3,最好是带有选项卡的方式?

1个回答

6
import io
import boto3
import xlsxwriter
import pandas as pd

bucket = 'your-s3-bucketname'
filepath = 'path/to/your/file.format'
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})

with io.BytesIO() as output:
    with pd.ExcelWriter(output, engine='xlsxwriter') as writer:
        df.to_excel(writer, 'sheet_name')
    data = output.getvalue()
s3 = boto3.resource('s3')
s3.Bucket(bucket).put_object(Key=filepath, Body=data)

1
谢谢,这解决了我遇到的一般“FileNotFoundError”错误。 - Roko Mijic
1
谢谢!这个做到了pd.to_excel()没有完成的功能。它一直抛出FileNotFoundError。我现在将其作为标准函数保留。 - Erik Volkers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接