【发布时间】:2017-07-11 01:40:05
【问题描述】:
我有 2 个 Stack Overflow 问题列表,A 组和 B 组。两者都有两列,Id 和 Tag。例如:
|Id |Tag
| -------- | --------------------------------------------
|2 |c#,winforms,type-conversion,decimal,opacity
对于 A 组中的每个问题,我需要在 B 组中找到与 A 组中的问题至少有一个重叠标签的所有匹配问题,而与标签的位置无关。例如,这些问题都应该是匹配问题:
|Id |Tag
|----------|---------------------------
|3 |c#
|4 |winforms,type-conversion
|5 |winforms,c#
我的第一个想法是将变量 Tag 转换为 set 变量并使用 Pandas 合并,因为 set 忽略了位置。但是,Pandas 似乎不允许将集合变量作为关键变量。所以我现在使用 for 循环来搜索 B 组。但它非常慢,因为我在 B 组中有 1300 万个观察值。
我的问题是: 1. Python中有没有其他方法可以通过集合的列进行合并,并且可以知道重叠标签的数量? 2、如何提高for循环搜索的效率?
【问题讨论】:
-
你是如何得到 1300 万个堆栈溢出问题的? API 永远不会让您做得足够快。
-
我从 Stack Exchange 数据转储 @COLDSPEED 下载
-
好的。下一个问题。 Tag 是一串逗号分隔的标签类型还是标签列表?
-
标签是一串括号分隔的标签。但我可以使用正则表达式将其转换为标签列表。我现在正在阅读您的答案,这似乎很有希望。非常感谢!
标签: python pandas dataframe merge set