Как отфильтровать серию pandas и извлечь данные из исходного DataFrame - PullRequest
0 голосов
/ 21 февраля 2020

Мой оригинальный Dataframe выглядит примерно так:

       type   username  product  count
0   access  45michael    63767      0
1   access     7762hc    84325      0
2    order     angel8    86217      1
3    order   kerrigan    76863      1
4    order  45michael    86833      1

После получения матрицы, связывающей продукты с пользователями со счетом в качестве значений (0, если пользователь купил продукт, 1, если нет), я выполнить косинусное подобие, получая что-то вроде этого:

username   45michael     alicia7      kerrigan  
username                                                                           
45michael   1.000000     0.577350     0.408248     
alicia7     0.577350     1.000000     0.000000     
john5       0.816497     0.707107     0.000000     
kerrigan    0.408248     0.000000     1.000000 

И теперь я использую эту строку кода:

sorted_values = cosine_sim['45michael'].sort_values(ascending=False)[1:11] 

Чтобы получить наиболее похожих пользователей к тому, кого я указывая:

username
john5       0.816497
alicia7     0.577350
kerrigan    0.408248
yvera       0.000000
uololo      0.000000

И теперь я хочу фильтр ряд sorted_values ​​pandas, чтобы получить только пользователей, которые имеют ненулевое сходство и получить продукты, которые они купили у оригинального Dataframe, но я до сих пор так тяжело боролся с этой проблемой.

Желаемый результат будет выглядеть следующим образом:

john5       0.816497
alicia7     0.577350
kerrigan    0.408248

Или просто с указанием имен пользователей наиболее похожих пользователей:

john5, alicia7, kerrigan
...