如何在熊猫单元格值中添加一对

时间:2020-05-13 09:00:09

标签: python pandas

所以,我试图用熊猫将一对添加到python中的特定值,但我迷路了。

我有两个熊猫数据框,其中一个有两列:图像名称和属于该图像的身份。

               img     id
17      000018.jpg   2464
27      000028.jpg   3670
46      000047.jpg   9177
55      000056.jpg    545

另一个df包含iris_images。

     iris_images
0          S1001
1          S1001
2          S1002
3          S1002
4          S1003

我想做的是向每个身份添加一个iris_image。例如,如果标识为2464,那么我想在新列中添加S1001,如果标识为3670,将其与S1002配对,等等。 因此结果将是:

               img     id     iris_image
17      000018.jpg   2464          S1001  
27      000028.jpg   3670          S1002
46      000047.jpg   9177          S1003
55      000056.jpg    545          S1004

有多个具有相同ID的图像和多个具有相同名称的iris_images。我要为每个ID分配相同的虹膜名称。

像这样:

               img     id     iris_image
17      000018.jpg   2464          S1001  
27      000028.jpg   2464          S1001
46      000047.jpg   9177          S1003
55      000056.jpg    545          S1004

不幸的是,我的想法都没有达到目标。

1 个答案:

答案 0 :(得分:1)

如果在id中可能有重复的值,请将GroupBy.ngroupSeries.map一起使用:

df1 = df_face.loc[df_face['id'].isin(identities)].copy()

s = df2['iris_images'].drop_duplicates().reset_index(drop=True)
df1['iris_image'] = df1.groupby('id', sort=False)['img'].ngroup().map(s)
print (df1)
           img    id iris_image
17  000018.jpg  2464      S1001
27  000028.jpg  2464      S1001
46  000047.jpg  9177      S1002
55  000056.jpg   545      S1003

如果稍后在df1中修改值,您会发现修改不会传播回原始数据(df_face),并且Pandas会发出警告。