You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS Lambda中从S3加载Pickle文件转为Pandas DataFrame的类型问题

问题描述

我用KNN分类器构建了机器学习模型,将测试数据集保存为Pickle文件后通过AWS SDK上传至AWS S3桶。本地测试时,通过以下代码加载该文件:

with open("C:\...path...\test_features.pkl", 'rb') as f:
    test_data= pickle.load(f)
print(type(test_data))

得到的结果为<class 'pandas.core.frame.DataFrame'>,符合预期。但在AWS Lambda中执行以下代码时:

s3 = boto3.client('s3')
test_features = s3.get_object(Bucket=bucket, Key= key)
print(type(test_features))

得到的类型是<class 'dict'>,请问如何在AWS Lambda中也获取到DataFrame类型?

解决方案

s3.get_object()返回的是包含对象元数据和文件内容的字典,而非直接的文件内容。要获取DataFrame,需从字典的Body字段读取文件流,再用pickle.load()加载。

修改Lambda中的代码如下:

import boto3
import pickle

s3 = boto3.client('s3')
# 获取S3对象响应
response = s3.get_object(Bucket=bucket, Key=key)
# 从响应体中加载pickle数据
test_data = pickle.load(response['Body'])
# 验证类型
print(type(test_data))

执行上述代码后,test_data的类型将与本地测试一致,为<class 'pandas.core.frame.DataFrame'>。

注意:确保Lambda执行环境已安装pandas(boto3为Lambda默认自带),可通过打包部署包或使用Lambda层添加依赖。

内容的提问来源于stack exchange,提问作者AbelAI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:15:40