2015-07-21 78 views
0

我有两列包含col(“我”“爱”“食物”)和col2(“爱”,“食物”)的分裂句子。我想要计数匹配的话排wise.like这里是2我想在python.As做R中,我们使用%的%函数来做到这一点?python的%(从R)的等效函数

+0

你能解释一下你想要的精确输出是什么?最好的方法是将R代码编写成一个完整的例子,这样,了解R和Python的人可以确定Python代码实现了相同的目标。 – Marius

+0

以上情况下输出为2。 R代码是 - 应用(train,1,function(x){sum(unlist(x $ query1)%in%unlist(x $ query2))}) –

回答

0

请设置您的单词列表的:。

set1 = set(["I", "love", "food"]) 
set2 = set(["love", "food"]) 

然后计数在set1set2的交集的元素数:

num_matched = len(set1.intersection(set2)) # returns 2 

请注意,这不会计算同一单词的多个匹配,实际上,同一单词的多个单词不会显示在set1set2中。而且,集合并不能保证它们的元素的顺序。但希望这有助于。

0

这里有%in%两个版本我已​​经在过去使用:

def r_in(left, right): 
    return list(map(lambda x: x in right, left)) 

def r_in(left, right): 
    return [x in right for x in left] 

我认为第二个看起来更好和更容易阅读。请注意,我没有做任何基准测试,所以我无法保证性能。

然后你可以指望的重叠很像R:

sum(r_in(["I", "love", "food"], ["love", "food"])) 
# 2