我从API调用中获得了输出作为列表:
out = client.phrase_this(phrase='ciao', database='it')
out
[{'Keyword': 'ciao',
'Search Volume': '673000',
'CPC': '0.05',
'Competition': '0',
'Number of Results': '205000000'}]
type(out)
list
我想创建一个数据框,然后将其循环添加到该数据框的新行,以从多个关键字开始API输出。
index = ['ciao', 'google', 'microsoft']
columns = ['Keyword', 'Search Volume', 'CPC', 'Competition', 'Number of Results']
df = pd.DataFrame(index=index, columns=columns)
对于无效的循环:
for keyword in index:
df.loc[keyword] = client.phrase_this(phrase=index, database='it')
谢谢!
答案 0 :(得分:0)
for keyword in index:
df.loc[keyword] = client.phrase_this(phrase=keyword, database='it')
这会将关键字传递给phrase_this函数,而不是整个索引列表。
答案 1 :(得分:0)
之所以不起作用,是因为您试图将列表内的字典分配给数据框行,而不仅仅是列表。
答案 2 :(得分:0)
您将收到包含字典的列表。如果您只想使用此列表的第一项,则以下解决方案应该有效:
for keyword in index:
df.loc[keyword] = client.phrase_this(phrase=keyword, database='it')[0].values()
[0]
获得列表的第一项。
values()
返回字典中所有值的列表。 https://www.tutorialspoint.com/python/dictionary_values.htm
答案 3 :(得分:0)
感谢您的回答,我找到了一种解决方法:
index = ['ciao', 'google', 'microsoft']
columns = ['Keyword', 'Search Volume', 'CPC', 'Competition', 'Number of Results']
out = []
for query in index:
out.append(client.phrase_this(phrase=query, database='it')[0].values())
out
[dict_values(['ciao', '673000', '0.05', '0', '205000000']),
dict_values(['google', '24900000', '0.66', '0', '13020000000']),
dict_values(['microsoft', '110000', '0.12', '0.06', '77'])]
df = pd.DataFrame(out, columns=columns).set_index('Keyword')