2015-07-21 4 views
0

У меня есть две колонки, содержащие расщепленное предложение, такое как col («i» «love» «food») и col2 («любовь», «еда»). совпавшие слова грести wise.like здесь 2 я хочу сделать в python.As в R мы используем% в% функции, чтобы сделать это ??Эквивалентная функция% in% (из R) для python

+0

Можете ли вы объяснить, что точные результаты вы хотите? Лучшим способом было бы записать код R в качестве полного примера, таким образом люди, которые знают как R, так и Python, могут быть уверены, что код Python достигает той же цели. – Marius

+0

Выходной сигнал 2 в вышеприведенном корпусе. R-код - apply (train, 1, function (x) {sum (unlist (x $ query1)% in% unlist (x $ query2))}) –

ответ

0

сделать наборы из ваших списков слов:..

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

и затем подсчитать количество элементов в пересечении set1 и set2:

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

Обратите внимание, что это не будет считаться с несколькими совпадениями одного и того же слова, и на самом деле кратность одного и того же слова не будет отображаться в set1 или set2. Кроме того, наборы не гарантируют порядок их элементов. Надеюсь, это поможет.

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 
Смежные вопросы