python pandas 如何对比两列数据的包含关系,并将结果写如表一内?

愤怒的胖子
  • 4
新手上路,请多包涵

表一add列匹配表二key_word,如果表一add包含表二的key_word,在表一第4列写入group,如果不包含则标注‘未收录’。PS:我用迭代也测过了,笛卡尔积也试过了,但是均没有达到想要的效果,拜托大神们,帮忙解决一下吧,谢谢了!下面附上我的代码您过目一下,小菜一枚,让您见笑了。
表一

表二

我尝试写的代码

回复
阅读 10.7k
1 个回答

最好不要使用for循环。

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)
你知道吗?

宣传栏