2014-09-08 2 views
1

Почему это не работает для строковых методов с использованием панд?check str.contains in pandas using string из серии

df['col1'].str.contains(df['col2']) 

Продолжайте получать: объекты «Серии» изменяемы, поэтому их нельзя хэшировать.

Обновление: уточнить. Я бы сравнил эти столбцы по строкам, а для частичной строки - точно в порядке. Например, для столбца 1 и столбца 2 ниже, я хотел бы вывод выше, чтобы быть, как на выходе:

col-1 col-2 output 
'cat' 'at'  True 
'aunt' 'at'  False 
'dog' 'dg'  False 
'edge' 'dg'  True 
+0

'contains' берет образец, я думаю, что вы хотите' '.isin' так ДФ [ 'col1 '] .isin (df [' col2 ']) ' – EdChum

+0

Я думаю, что y ou need 'df ['col1']. isin (df ['col2']. values)', правильно? – exp1orer

+0

Так что не важно, что я хочу только совместить часть строки? 'mn' isin 'mnxn' будет истинным? – kmartin

ответ

2

Вы можете определить простую функцию и просто использовать тест для того, одно из значений в одном столбце в другом:

In [37]: 

df = pd.DataFrame({'col1':['mn','mxn','ca','sd','xa','ac'], 'col2':['m','n','x','n','q','y']}) 
def func(x): 
    return x.col2 in list(x.col1) 
df.apply(func, axis=1) 
Out[37]: 
0  True 
1  True 
2 False 
3 False 
4 False 
5 False 
dtype: bool 

Для вашего случая использования следующего должно делать то, что вы хотите:

return x.col2 in x.col1 
Смежные вопросы