我有4个网址的列表:
['https://cache.wihaben.at/mmo/6/297/469/806_-1094197631.jpg', 'https://cache.wihaben.at/mmo/6/297/469/806_-455156804.jpg', 'https://cache.wihaben.at/mmo/6/297/469/806_466214286.jpg', 'https://cache.wihaben.at/mmo/6/297/469/806_1475201828.jpg']
我想构建Pandas数据框,该框应具有Image_1, Image_2, Image_3
和Image_4
作为列名,而URL作为行值。
我的代码:
advert_images = {('Image_1', eval(advert_image_list[0])),
('Image_2', eval(advert_image_list[1])),
('Image_3', eval(advert_image_list[2])),
('Image_4', eval(advert_image_list[3])),
}
adIm_DF = pd.DataFrame(advert_images)
返回错误:
文件“”,第1行 https://cache.wihaben.at/mmo/6/297/469/806_-1094197631.jpg ^ SyntaxError:语法无效
评估值停留在URL中的“ :
”上,因为它可能会将其解析为dict。
我还需要选择在列表中的n个URL上进行迭代,并用值构建对应的列。
列为Image_(iterator_value)
,行为URL
值。
答案 0 :(得分:2)
如果URls以字符串形式存储(如@Tox指出),则我的代码没有问题:
PyObject_CallMethodObjArgs
答案 1 :(得分:1)
您应该输入网址字符串。
str((advert_image_list[0])
答案 2 :(得分:1)
我认为您对eval
的使用感到困惑。它用于运行保存在字符串中的代码。在您的示例中,python尝试将url作为代码运行,这显然不起作用。您将不需要eval
。
尝试一下:
advert_image_list = ['https://cache.willhaben.at/mmo/6/297/469/806_-1094197631.jpg', 'https://cache.willhaben.at/mmo/6/297/469/806_-455156804.jpg', 'https://cache.willhaben.at/mmo/6/297/469/806_466214286.jpg', 'https://cache.willhaben.at/mmo/6/297/469/806_1475201828.jpg']
advert_images = [('Image_1', advert_image_list[0]),
('Image_2', advert_image_list[1]),
('Image_3', advert_image_list[2]),
('Image_4', advert_image_list[3])]
adIm_DF = pd.DataFrame(advert_images).set_index(0).T
答案 3 :(得分:1)
这对我有用
df = pd.DataFrame(columns=['Image1','Image2','Image3','Image4'])
df.loc[0] = ['https://cache.wihaben.at/mmo/6/297/469/806_-1094197631.jpg', 'https://cache.wihaben.at/mmo/6/297/469/806_-455156804.jpg', 'https://cache.wihaben.at/mmo/6/297/469/806_466214286.jpg', 'https://cache.wihaben.at/mmo/6/297/469/806_1475201828.jpg']