I have two dataframes:
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
How can I assign values to df2
based on list ofdf1.name
?
I want a table like this:
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
Here is my code:
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)