我正在尝试让python从csv中读取一行,然后将内容放入DynamoDB,然后对每个后续行执行相同操作,直到结束。我修改了亚马逊的示例代码,使其如下所示:
from __future__ import print_function # Python 2/3 compatibility
import boto3
import decimal
import pandas as pd
dynamodb = boto3.resource('dynamodb', region_name='us-west-2', aws_access_key_id='123456789', aws_secret_access_key='987654321')
table = dynamodb.Table('Loyalty_One')
data = pd.read_csv('testdb.csv')
data[['collector_key']] = data[['collector_key']].astype(float)
for i, rows in data.iterrows():
collector_key = float(data['collector_key'])
sales = float(data['sales'])
print("Adding data:", collector_key, sales)
table.put_item(
Item={
'collector_key': collector_key,
'sales': sales,
}
)
当我这样做时,我收到错误:TypeError:无法将系列转换为
你可以在这里看到这个文件,这没什么不同寻常的: https://s3.amazonaws.com/vshideler-data/testdb.csv
在我看来,第16行(和第17行)应该提取列中每行的内容。我认为标题可能会干扰但是使用“header = None”执行pd.read_csv只会让我产生一个不同的错误。
(虽然我觉得我可能只使用原始数据帧而不是csv文件)
答案 0 :(得分:0)
我希望这会有所帮助。
如果项目的类型是系列并且有一个数字。您可以使用常规转换来转换类型。
例如,您可以像这样投射...
XX=AA[AA.SHOUT="HAHA"]["TYPE"] # Get the Type column and find value...
XX=float(XX) if len(XX)==1 else np.NaN
print(XX)
在真正的严肃代码中,您必须检查更多的异常,但是对于有限的情况,这将是转换数据的最简单方法。
祝你好运