此问题在此处已有答案:
is it possible to do fuzzy match merge with python pandas?(共15个答案)
2天前关闭。
这篇文章在2天前被编辑并提交审查。
我有两个 Dataframe :
df1 = pd.DataFrame(list(zip(['name1, Name2, name5', 'name4, name3', 'name6xx'],
[150, 230, 'name6xx'])),
columns=['name', 'compound1'])
df1
df2 = pd.DataFrame(list(zip(['name1 ppl', 'PPL name2', 'Name3 PPL', 'name4 ppl', 'name5 ppl', 'name6xx'])), columns=['name'])
df2
第一次
如何根据df1.name
列表为df2
赋值?
我想要一张这样的table:
df2 = pd.DataFrame(list(zip(['name1 ppl', 'PPL name2', 'Name3 PPL', 'name4 ppl', 'name5 ppl', 'name 6xx'],
[150,150,230,230,150,'name6xx'])),
columns=['name', 'compound'])
df2
下面是我的代码:
def match(name):
cond = df1['name'].str.contains(name, case=False)[0]
if cond:
return df1.loc[cond, 'compound1'].values[0]
else:
return name
df2.compound_new = df2.name.apply(match)
1条答案
按热度按时间z31licg01#
您可以创建一个正则表达式,
extract
值和map
匹配:输出: