python - 数数 从一个数据框列表到另一个数据框列表的匹配词
问题描述
我有 2 个数据框,我想在其中计算编号。从 df1 到 df 2 的匹配词
df1 是属于每个部门的关键字列表,例如教育、金融、交通等
df1
:
部门 | 内容 |
---|---|
教育 | ['学校','孩子','学习','充实'] |
金融 | ['银行','保险','放债人'] |
df 2 是从网站上抓取的数据。单词已被拆分和清理,并以列表形式。
df2
:
公司名称 | 网站信息 |
---|---|
美国广播公司 | ['学校','充实'] |
国防军 | ['银行','儿童','学校'] |
我想找出没有。df1 中每个扇区匹配的单词。
预期结果:
公司名称 | 网站信息 | 匹配词教育数量 | 匹配词数 财务 |
---|---|---|---|
美国广播公司 | ['学校','充实'] | 2 | 0 |
国防军 | ['银行','儿童','学校'] | 2 | 1 |
解决方案
有两种解决方案:
遍历时间复杂度为 O(n^2) 的列表
education= ['school', 'children', 'learning', 'enrichment' ] abc = ['school', 'enrichment'] count = 0 for element in abc: if element in education: count+=1
使用时间复杂度为 O(n) 的 collections.Counter()
counters = collections.Counter(education+abc) count = len([x for x in list(dict(counters).values()) if x >1])
显然第二种解决方案更好
推荐阅读
- c# - 在 asp.net 中通过智能卡 X509 证书进行客户端身份验证,无需登录名和密码
- python - 有没有办法使用 django 中的 api 更新对象的特定字段?
- flutter - Flutter 如何结合 FutureBuilder 和 Consumer?
- python - 基于 2 列合并和对齐列
- javascript - 细化以在联合中键入别名
- python - 使用日期/日期时间无法使用 Pandas 创建新系列
- flutter - 为什么 ModalRoute 返回 null?
- admob - 很长一段时间后,admob 横幅从未开始显示。只有测试横幅有效
- reactjs - 内容安全策略指令块动态加载的内联脚本
- r - 使用 ggplot 在保持抖动的同时更改组内点的颜色