将pandas数据框架列转换为浮点数的问题



我正在尝试构建一个名人外观类似的程序,使用VggFace和IMDb名人面孔数据库,我计算数据库中每个面孔的嵌入,并将其存储在pandas数据框架中。然而,当我试图加载嵌入后记使用它来计算余弦距离我不能使它工作,显然它是作为一个字符串内的列表(即"[1.3 -1 ....etc");。所以我有几个问题:

  • 我如何看到这些向量实际上是如何存储的?当我使用Excel查看数据时,它似乎好的。

  • 如何将此字符串转换为浮点数列表;我试过使用ast,但是它不起作用

我的代码太长了,所以我不知道我是否应该把数据帧上传到网上,这样你们就可以看到了。

下面是使用df.to_dict()的一行:518:[3.8515975 0.4580283 1.964929…]-6.336113 1.31456 4.2759323]'

我正在尝试遍历数据帧,并使用以下代码将每行与用户面部的嵌入表示相乘:

vect = calculVecteur('imagesUtilisateur/test.jpg',model)
vect = list(map(float, vect))
meta_data_imdb = pd.read_csv("resources/vectorisation/imdb_metadata_v.csv")
meta_data_imdb['distance'] = meta_data_imdb['vecteur'].apply(lambda x: calculerDistance(x,vect))

calculVecteur()使用Vgg模型计算用户图像的嵌入,然后使用calculerDistance()方法计算余弦距离。

在这里使用调试器是我得到的:

https://i.stack.imgur.com/Olh76.jpg

提前感谢您的帮助。

如果问题是类型转换,请尝试pd。To_numeric它适用于我,例如,如果你想将列列表转换为数字;

cols = df.columns
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce')

通过指定列而不是列表,您也可以只对一个列执行此操作。

最新更新