У меня есть такие данные, как image_attr_df данные ниже.Я хочу сравнить элемент значений с указанным списком записей из кадра данных и вернуть элемент с столбцом и значением, уникальным для исходного элемента.
Так что в этом примере я сравниваю "покупки""диктовать записи с image_id = [1615, 1561].Я хотел бы, чтобы мой код возвращался:
{('Sleeve', 'Long sleeves')}
Прямо сейчас он возвращает столбцы и значения, которые отличаются для каждой записи.Кто-нибудь знает, как я могу отфильтровать этот окончательный диктат, чтобы он просто возвращал диктат только с уникальными столбцами и значениями (как в моем примере выше?)
img_attr_df
:
image_id Neckline Sleeve Skin_exposure
0 619 V-shape Long sleeves Low exposure
1 1615 V-shape Short sleeves Low exposure
2 1561 Round Short sleeves Low exposure
purch
:
image_id Neckline Sleeve Skin_exposure
0 619 V-shape Long sleeves Low exposure
Код:
def diff_attributes(df_na,dataset,To_compare):
compared=[]
for i in To_compare:
compared.append(set(dataset.loc[:,input_df.columns!='image_id'].to_dict(orient ='records')[0].items())-set(df_na[df_na['image_id']==i].loc[:,input_df.columns!='image_id'].to_dict(orient ='records')[0].items()))
return compared
input_df=img_attr_df[['image_id','Neckline','Sleeve','Skin_exposure']]
comp_list=[1615,1561]
diff_attributes(input_df,purch,comp_list)
Выход:
[{('Sleeve', 'Long sleeves')},
{('Neckline', 'V-shape'), ('Sleeve', 'Long sleeves')}]
Желаемый выход:
{('Sleeve', 'Long sleeves')}