У меня есть df:
df = pd.DataFrame({'id': [123, 456, 789],
'list_left': [['dog', 'cat'],['dog', 'mouse'], ['dog', 'elephant']],
'list_right': [['cat', 'mouse', 'giraffe'], ['mouse', 'dog'], ['giraffe', 'gorilla']]})
Я хочу найти сходство между списком строк.Это должно игнорировать порядок или длину (т. Е. ['dog', 'mouse']
и ['mouse', 'dog']
должны привести к 100% сходству).Вот моя попытка (https://www.geeksforgeeks.org/python-percentage-similarity-of-lists/):
df['result'] = len(set(df['list_left']) & set(df2['list_right'][1])) / float(len(set(df['list_left']) | set(df['list_right']))) * 100
Это приводит к этой ошибке:
TypeError Traceback (most recent call last)
<ipython-input-136-3b1e1ee16eed> in <module>()
----> 1 df['new'] = len(set(df['list_left']) & set(df2['list_right'][1])) / float(len(set(df['list_left']) | set(df['list_right']))) * 100
TypeError: unhashable type: 'list'
Какой хороший способ сравнить столбцы списков в dand pandas?сходство между списками имеет логический смысл для списков строк разной длины?