我有一段简单的Lambda代码来读取S3存储桶中的CSV文件。一切运行良好,但是当我尝试将CSV数据转换为pandas数据帧时,会出现错误 string indices must be integers
。
我的代码很标准,但我需要将CSV作为数据帧用于进一步处理。下划线处是错误的源头。我可以顺利地打印数据,因此Bucket和文件细节已正确配置。
更新的代码:
import json
import pandas as pd
import numpy as np
import requests
import glob
import time
import os
from datetime import datetime
from csv import reader
import boto3
import traceback
import io
s3_client = boto3.client('s3')
def lambda_handler(event, context):
try:
bucket_name = event["Records"][0]["s3"]["bucket"]["name"]
s3_file_name = event["Records"][0]["s3"]["object"]["key"]
resp = s3_client.get_object(Bucket=bucket_name, Key=s3_file_name)
data = resp['Body'].read().decode('utf-8')
df=pd.DataFrame( list(reader(data)))
print (df.head())
except Exception as err:
print(err)
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello fr2om Lambda!')
}
traceback.print_exc()
pd.read_csv(data)
吗? - ig0774event["Records"][0]["s3"]["bucket"]["name"]
这样的代码出现问题时,你可以添加一些临时代码来缩小问题范围。首先试试event["Records"]
,然后是event["Records"][0]["s3"]
和event["Records"][0]["s3"]["bucket"]
,哪个报错就能知道问题所在了。 - tdelaney响应: (..)-简短地切断 函数日志: 开始RequestId:d99891e1-6c63-4307-acb5-f94bcb92217c版本:$LATEST 0 0 ResponseMetadata 1 AcceptRanges 2 LastModified 3 ContentLength 4 ETag 结束RequestId:d99891e1-6c63-4307-acb5-f94bcb92217c 报告RequestId:d99891e1-6c63-4307-acb5-f94bcb92217c持续时间:463.01毫秒计费持续时间:500毫秒内存大小:128 MB最大内存使用量:128 MB初始化持续时间:1382.89毫秒
- Kalenji