从列表输出开始将行附加到数据框的For循环

时间:2019-03-22 18:36:46

标签: python pandas

我从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')

谢谢!

4 个答案:

答案 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')