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

新手上路,请多包涵

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

表二

我尝试写的代码

阅读 18.8k
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)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏