Skip to content
Advertisement

Merge Pandas Dataframes based on substring or partial match in another Dataframe

I have two sample data frames:

df1 = pd.DataFrame({'Model': ['0RW52HC5KDD13R', '0RW52HC5KDD13U','JJS42HC5JSSAYR']})

df2 = pd.DataFrame({'Group_Var': ['0RW52HC5K', '0RW52HC5K','JJS42HC5J']})

Using this will result result in an empty dataframe.

df3 = df1.merge(df2, left_on='Model', right_on='Group_Var')

How could I go about using a merge to use a substring / partial match from df2['Group_Var'] in df1['Model']? Perhaps using the str.contains() method as part of the merge?

Just for context my expected output would be something like this:

Group_Var        Model
0RW52HC5K        0RW52HC5KDD13R
0RW52HC5K        0RW52HC5KDD13U
JJS42HC5J        JJS42HC5JSSAYR

Advertisement

Answer

Use pd.concat with axis=1:

df3 = pd.concat([df1, df2], axis=1)

Output:

>>> df3
            Model  Group_Var
0  0RW52HC5KDD13R  0RW52HC5K
1  0RW52HC5KDD13U  0RW52HC5K
2  JJS42HC5JSSAYR  JJS42HC5J
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement