我可以使用以下代码使用具有固定值(300254)的id查询dynamodb:
response = table.query(
KeyConditionExpression=Key('id').eq(300254)
for i in response['Items']:
print(i['id'], ":", i['name'], ":", i['sal'])
但是,如果我想用下面的Python数据框(dfnew)替换硬编码值,如何在dynamodb中进行查询或扫描? dfnew具有3个字段id,name,sal和id是dynamodb中的主键。这可能吗?
dfnew = pd.read_csv("C:\\babynames.csv")
response = table.query(KeyConditionExpression=(Key('id').eq(dfnew.id))
上面的代码行未执行,失败。也没有给出适当的错误。这是“ dfnew.id”的正确方法还是需要进行任何更改?
response = table.query(KeyConditionExpression=(Key('id').eq(dfnew.iloc[0]['id'])))
也尝试使用上面的行,但出现下面的错误。如何实现这一目标有帮助吗?
TypeError: cannot do positional indexing on <class 'pandas.core.indexes.range.RangeIndex'> with these indexers [id] of <class 'str'>
谢谢。
答案 0 :(得分:0)
我很少进行研究,并且下面的代码表现出色。可能对像我这样的人有帮助。
itemsList = []
for i in range(len(dfnew.loc[:, 'id'])):
response = table.query(KeyConditionExpression=Key('id').eq(int(dfnew.at[i, 'id'])))
itemsList += response['Items']
df = pd.DataFrame(itemsList)
print("Record count:", df.count())
df.to_csv("C:\\outputs\\DynamoOutput.csv")
以上代码通过从我的输入数据帧(dfnew.id)中获取数据并以json格式给出响应来搜索Dynamodb的表。最终能够导出为CSV。