How to merge pandas on string contains?

前端 未结 2 1480
轻奢々
轻奢々 2020-12-10 09:06

I have 2 dataframes that I would like to merge on a common column. However the column I would like to merge on are not of the same string, but rather a string from one is co

2条回答
  •  一整个雨季
    2020-12-10 09:48

    My solution involves applying a function to the common column. I can't imagine it holds up well when df2 is large but perhaps someone more knowledgeable than I can suggest an improvement.

    def strmerge(strcolumn):
        for i in df2['column_common']:
            if strcolumn in i:
                return df2[df2['column_common'] == i]['column_b'].values[0]
                break
            else:
                pass
    
    df1['column_b'] = df1.apply(lambda x: strmerge(x['column_common']),axis=1)
    
    df1
        column_a    column_common   column_b
    0   John        code            Moore
    1   Michael     other           Cohen
    2   Dan         ome             Smith
    3   George      no match        None
    4   Adam        word            Faber
    

提交回复
热议问题