鍍金池/ 問(wèn)答/數(shù)據(jù)分析&挖掘  Python/ python pandas 如何對(duì)比兩列數(shù)據(jù)的包含關(guān)系,并將結(jié)果寫(xiě)如表一內(nèi)?

python pandas 如何對(duì)比兩列數(shù)據(jù)的包含關(guān)系,并將結(jié)果寫(xiě)如表一內(nèi)?

表一add列匹配表二key_word,如果表一add包含表二的key_word,在表一第4列寫(xiě)入group,如果不包含則標(biāo)注‘未收錄’。PS:我用迭代也測(cè)過(guò)了,笛卡爾積也試過(guò)了,但是均沒(méi)有達(dá)到想要的效果,拜托大神們,幫忙解決一下吧,謝謝了!下面附上我的代碼您過(guò)目一下,小菜一枚,讓您見(jiàn)笑了。
表一

表二

我嘗試寫(xiě)的代碼

回答
編輯回答
淡墨

最好不要使用for循環(huán)。

df1['group'] = df1['add'].apply(lambda x: df2.loc[[y in x for y in df2['key_word']],'group']).stack().reset_index(name='group')['group']

更新:
另一種方法,處理未收錄的情況

def match_group(x):
    for y in df2['key_word']:
        if y in x:
            return y
    return '未收錄'

df1['group'] = df1['add'].apply(match_group)
2017年5月12日 19:01