所以,我试图用熊猫将一对添加到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
不幸的是,我的想法都没有达到目标。
答案 0 :(得分:1)
如果在id
中可能有重复的值,请将GroupBy.ngroup
与Series.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会发出警告。