У меня есть два df:
df1 = pd.DataFrame({'name1': ['ID1', 'ID2','ID3','ID4','ID5','ID6','ID7'], 'col1': ["S3,S22,S44", "S133,S32,S334", "S13,S24,S45", "S1,S2,S4,S5", "S3,S4,S5", "S3,S2,S5", "S38,S42,S9"],'col2': ['ab', 'ac','ad','ae','af','an','ak'],})
df2 = pd.DataFrame({'name2': ['Ik3', 'Ik1','Ik2','Ik7','Ik5','Ik6','Ik5'], 'col1': ["S3, S44, S22,S54", "S133, S32,S334, S30", "S13, S24,S45", "S11, S21,S4, S5", "S3, S4,S5", "S3, S22,S5", "S3, S4,S9, S10, S13"],'col2': ['ab', 'ae','ac','ad','af','ab','ak']})
df1
name1 col1 col2
ID1 S3,S22,S44 ab
ID2 S133,S32,S334 ac
ID3 S13,S24,S45 ad
ID4 S1,S2,S4,S5 ae
ID5 S3,S4,S5 af
ID6 S3,S2,S5 an
ID7 S38,S42,S9 ak
df2
name2 col1 col2
Ik3 S3,S44,S22,S54 ab
Ik1 S133,S32,S334,S30 ae
Ik2 S13,S24,S45 ac
Ik7 S11,S21,S4,S5 ad
Ik5 S3,S4,S5 af
Ik6 S3,S22,S5 ab
Ik5 S3,S4,S9,S10,S13 ak
Хотел бы сравнить два df списков col2 и объединить, которые имеютболее 50% совпадений, а остальные оставлены пустыми:
Желаемый вывод:
name1 col1 col2 M_name2 M_col1 M_col2 percentage
ID1 S3,S22,S44 ab Ik3 S3,S44,S22,S54 ab 75
ID1 S3,S22,S44 ab Ik6 S3, S22,S5 ab 75
ID2 S133,S32,S334 ac Ik1 S133,S32,S334,S30 ae 50
ID3 S13,S24,S45 ad Ik2 S13,S24,S45 ac 100
ID4 S1,S2,S4,S5 ae Ik5 S3,S4,S5 af 50
ID5 S3,S4,S5 af Ik5 S3,S4,S5 af 100
ID6 S3,S2,S5 an Ik5 S3,S4,S5 af 75
ID7 S38,S42,S9 ak NaN NaN NaN NaN
Я попытался с функцией isin:
df1[df1.col2.isin(df2.col2)]
, но не получил желаемый вывод,Любое предложение приветствуется.