将包含 20 个项目的列表添加到数据框中行的连续单元格



我正在使用 Clarifai 的 API 获取 URL 中图像的标签,然后将其添加到空数据框中。从 Clarifai 返回了 20 个标签,我想将每个 URL 及其标签存储在 1 行中。因此,该行中的第一个单元格将是 URL,然后每个连续的单元格将包含有关该 URL 的 20 个项目之一。

理想情况下,它看起来像这样

URL.             | tag 1 | tag 2 | ..... | tag 20 
www.tetURL.com     | Xyz   | abc    |...... | fgh

到目前为止,我已经收到了 URL 和标签,但我很难弄清楚如何将每个标签存储在一行的连续单元格中

df = pd.DataFrame().   #Need to append values to this DataFrame
test = 'https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQVOCBtn_hZYXawqd_OPu6YkAM737TEiIabOe0X_CIvPtuPRei96C3gI1KjTlc1URek05nhBSiV&usqp=CAc'
print('running predictions for this url:n', test,'n')
response = workflow.predict_by_url(test)

pred_vals = response['results'][0]['outputs'][2]['data']['regions'][0]['data']['concepts']
vals_list = []
for vals in range(len(pred_vals)):
concept_val = pred_vals[vals]  # dict containing the id, name and value 
#     print(concept_val['name'],':', concept_val['value'])
vals_list.append(concept_val['name'])
#     print('')
print(vals_list)

这些是vals_list的值

['long-sleeve', 'top', 'colorblock', 'turtleneck', 'crewneck', 'sweatshirt', 't-shirt', 'graphic', 'stripes', 'mockneck', 'sweater', 'coat', 'shirt', 'knit', 'hoodie', 'fedora', 'leather', 'eyelet', 'scarf', 'windowpane']

我将不胜感激你们可以提供的任何帮助。

您是否设法构建了一个以 url 为键和标签为值的字典?如果是这样,您可以使用from_dict:

info_df = pd.DataFrame.from_dict(info, orient='index')

如果您不希望将网址作为索引,请添加 .reset_index((:

info_df = pd.DataFrame.from_dict(info, orient='index').reset_index()

重新考虑使用tag#结构的宽格式数据框,改用两列的长格式数据框进行urltag。长格式数据可以更好地扩展效率(即,如果标签少于或超过 20 个怎么办(?此外,在大多数分析操作中处理长数据要容易得多:聚合、建模、绘图等。使用这种方法,只需使用DataFrame构造函数即可构建两列数据集。

test = ('https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQVOCBtn_hZYXaw'
'qd_OPu6YkAM737TEiIabOe0X_CIvPtuPRei96C3gI1KjTlc1URek05nhBSiV&usqp=CAc')
print('running predictions for this url:n', test,'n')
response = workflow.predict_by_url(test)     
pred_vals = (response['results'][0]['outputs'][2]
['data']['regions'][0]['data']['concepts'])
vals_list = []
for concept_val in pred_vals:
vals_list.append(concept_val['name'])
# TWENTY-ROW DATA FRAME WITH SAME URL FOR EACH TAG
df = pd.DataFrame({'url': test, 'tags': val_list})

或者,对于具有列表理解的较短调用for-loop

df = pd.DataFrame({'url': test,
'tags': [concept_val['name'] for concept_val in pred_vals]})

相关内容

最新更新