Вычислите косинусное сходство между двумя векторами (значениями в строках) в фрейме данных Pandas

#python-3.x #dataframe #cosine-similarity

Вопрос:

Вот как выглядит мой набор данных в структуре фрейма данных Pandas:

 df  index id time var1 var2 var3 var4 var5 1 1 1 . . . . . 2 1 2 1 1 2 2 3 3 1 3 . . . . . 4 1 4 1 3 1 2 6 5 1 5 . . . . . 6 2 1 2 1 3 3 2 7 2 2 . . . . .  8 2 3 . . . . . 9 2 4 4 3 1 2 3 ...  

Где есть несколько записей для каждого идентификатора с течением времени с некоторыми другими столбцами, которые будут использоваться для вычисления косинусного сходства(CS).
Я искал некоторые ресурсы, чтобы применить расчет CS в своем контексте, но не смог найти хороший.
Что я хочу сделать, так это вычислить CS, который будет получен в виде одного значения между вектором индекса 2 (1,1,2,2,3) и вектором индекса 4(1,3,1,2,6). В то же время мне также нужно избегать пропущенных строк, чтобы сделать это. Каждая группа идентификаторов имеет только два вектора.
Таким же образом для идентификатора 2, например, CS между (2,1,3,3,2) и (4,3,1,2,3).

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

 import scipy from scipy import spatial vector1 = [1, 1, 2, 2, 3] vector2 = [1, 3, 1, 2, 6]  cosine_similarity = 1 - spatial.distance.cosine(vector1, vector2) print (cosine_similarity)  Output: 0.8994895926845297  

Каков был бы хороший способ решить эту проблему, пока я учитываю некоторые ограничения? Спасибо.