我的数据框:
data = {'Col1': ['Bad Homburg', 'Bischofferode', 'Essen', 'Grabfeld OT Rentwertshausen','Großkrotzenburg','Jesewitz/Weg','Kirchen (Sieg)','Laudenbach a. M.','Nachrodt-Wiblingwerde','Rehburg-Loccum','Dingen','Burg (Dithmarschen)'],
'Col2': ['Rehburg-Loccum','Grabfeld','Laudenbach','Kirchen','Jesewitz','Großkrotzenburg','Nachrodt-','Essen/Stadt','Bischofferode','Bad Homburg','Münster','Burg']}
df = pd.DataFrame(data)
我的df中有两个列,如下所示:
col1 | col2 |
---|---|
Bad Homburg | Rehburg-Loccum |
Bischofferode | Grabfeld |
Essen | Laudenbach |
Grabfeld OT Rentwertshausen | Kirchen |
Großkrotzenburg | Jesewitz |
Jesewitz/Weg | Großkrotzenburg |
Kirchen (Sieg) | Nachrodt- |
Laudenbach a. M. | Essen/Stadt |
Nachrodt-Wiblingwerde | Bischofferode |
Rehburg-Loccum | Bad Homburg |
Dingen | Münster |
Burg (Dithmarschen) | Burg |
我想在COL2中查找COL1数据.如果项目存在,我想写在列Lookup_Value下的同一行中,我还会 comments 匹配百分比.以下是我的预期结果:
col1 | col2 | Lookup_value | Comment |
---|---|---|---|
Bad Homburg | Rehburg-Loccum | Bad Homburg | 100% Matched |
Bischofferode | Grabfeld | Bischofferode | 100% Matched |
Essen | Laudenbach a. M. | Essen/Stadt | Best Possible Match |
Grabfeld OT Rentwertshausen | Kirchen | Grabfeld | Best Possible Match |
Großkrotzenburg | Jesewitz | Großkrotzenburg | 100% Matched |
Jesewitz/Weg | Großkrotzenburg | Jesewitz | Best Possible Match |
Kirchen (Sieg) | Nachrodt- | Kirchen | Best Possible Match |
Laudenbach | Essen/Stadt | Laudenbach a. M. | Best Possible Match |
Nachrodt-Wiblingwerde | Bischofferode | Nachrodt- | Best Possible Match |
Rehburg-Loccum | Bad Homburg | Rehburg-Loccum | 100% Matched |
Dingen | Münster | No Match | |
Burg (Dithmarschen) | Burg | Burg | Best Possible Match |
我正在try 这种方式,但行不通:
def lookup_value_and_comment(row):
col1_value = row['Col1']
col2_value = row['Col2']
if col1_value in col2_value:
if col1_value == col2_value:
return pd.Series([col1_value, '100% Matched'], index=['Lookup_value', 'Comment'])
else:
return pd.Series([col2_value, 'Best Possible Match'], index=['Lookup_value', 'Comment'])
else:
return pd.Series(['', 'No Match'], index=['Lookup_value', 'Comment'])
df[['Lookup_value', 'Comment']] = df.apply(lookup_value_and_comment, axis=1)
print(df)