将项目列出到熊猫列

时间:2019-02-27 10:18:58

标签: python python-3.x pandas list

我有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_3Image_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值。

4 个答案:

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