У меня есть лямбда-функция, которая проверяет корзину s3 на событие создания. Если файл загружен в корзину, я анализирую этот файл и загружаю результаты в таблицу DynamodB. Вот как выглядит моя функция.
import json
import boto3
import pandas as pd
import urllib
import io
import uuid
import logging
path = "sensor-data.csv"
obj = s3.get_object(Bucket='sensor-bucket', Key=path)
csv_string = io.BytesIO(obj['Body'].read())
# Read a csv file and turn it into a DataFrame
df = pd.read_csv(csv_string, delimiter=';', engine ='c', encoding= 'unicode_escape')
# Rename columns as seen in the Lambda Function
df.rename(columns={'< 5,6m': 'SmallSize', '>= 5,6m': 'LargeSize'}, inplace=True)
df.Felt.replace(['1', '2', '3', '4'], ['lane_1', 'lane_2', 'lane_3', 'lane_4'], inplace=True)
# Filter out data column
data = df['data'] = df[['Navn', 'Vegreferanse', 'Fra', 'Til', 'Volum',
'Felt', 'SmallSize', 'LargeSize']].to_json(orient='records')
# Calculate traffic
traffic = df.groupby(['Felt'])['Volum'].sum().to_dict()
# Create a Dictionary for a new DataFrame
data = {'sensor-id': df.Trafikkregistreringspunkt.iloc[0], 'data': data,
'date': df.Dato.iloc[0], 'Id': str(uuid.uuid4()), 'traffic': [traffic]}
# Create the dataframe
df2 = pd.DataFrame(data, index=[0])
print("Parsing complete. Writing to table...")
# Connect to dynamodb push items to the table
dynamoDb = boto3.resource('dynamodb')
table = dynamoDb.Table("sensor-data-table")
for line in df2.T.to_dict().values():
table.put_item(Item=line)
print("Data processing completed successfully!")
На моем локальном компьютере я могу запустить код и поместить данные в таблицу. Однако, когда я пытаюсь сделать это в лямбда-функции, я получаю следующую ошибку:
Unsupported type "<class 'numpy.int64'>" for value "1996": TypeError
1996 - это одно из значений, которые я пытаюсь загрузить в таблицу. Вот как выглядит df2.T.to_dict (). Values ();
dict_values([{'sensor-id': '11219V22151',
'data': '[{"Some Data Here"}]',
'date': '2020-01-01',
'Id': '107d8ce5-c7d2-4b86-af83-d5ce7d11ce74',
'traffic': {'Totalt': 1996, 'Totalt i retning Fianex Rv 415': 944,
'Totalt i retning Stølen X Rv 420': 1052, 'lane_1': 1052, 'lane_2': 944}}])
Буду признателен за помощь и разъяснение по этому вопросу.