Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从数据框中获取用户名_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 如何从数据框中获取用户名

Python 如何从数据框中获取用户名,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,问题的名称可能不是最合适的,因此我将尽力解释我的问题: 我根据用户的购买历史计算用户之间的余弦相似性,所以我得到了如下矩阵: product 63767 76863 84325 86217 86833 130365 537077 username 45michael

问题的名称可能不是最合适的,因此我将尽力解释我的问题:

我根据用户的购买历史计算用户之间的余弦相似性,所以我得到了如下矩阵:

product    63767    76863    84325    86217    86833    130365   537077   
username                                                                                           
45michael      0.0      1.0      0.0      0.0      1.0      1.0      0.0      
7762hc         0.0      0.0      0.0      0.0      0.0      0.0      0.0      
adrian12       0.0      0.0      0.0      0.0      0.0      0.0      0.0     
alicia7        0.0      0.0      0.0      0.0      0.0      1.0      0.0 
username   45michael  7762hc  adrian12   alicia7 
username                                                                                           
45michael   1.000000     0.0       0.0  0.577350     
7762hc      0.000000     0.0       0.0  0.000000     
adrian12    0.000000     0.0       0.0  0.000000    
alicia7     0.577350     0.0       0.0  1.000000
username
alicia7     0.577350
adrian12    0.000000
7762hc      0.000000
其中1表示用户是否购买了该书,0表示用户未购买

得到该矩阵后,我计算了用户之间的余弦相似矩阵:

cosine_sim = pd.DataFrame(cosine_sim, ndex=df_matrix.index, `columns = df_matrix.index)
结果矩阵如下所示:

product    63767    76863    84325    86217    86833    130365   537077   
username                                                                                           
45michael      0.0      1.0      0.0      0.0      1.0      1.0      0.0      
7762hc         0.0      0.0      0.0      0.0      0.0      0.0      0.0      
adrian12       0.0      0.0      0.0      0.0      0.0      0.0      0.0     
alicia7        0.0      0.0      0.0      0.0      0.0      1.0      0.0 
username   45michael  7762hc  adrian12   alicia7 
username                                                                                           
45michael   1.000000     0.0       0.0  0.577350     
7762hc      0.000000     0.0       0.0  0.000000     
adrian12    0.000000     0.0       0.0  0.000000    
alicia7     0.577350     0.0       0.0  1.000000
username
alicia7     0.577350
adrian12    0.000000
7762hc      0.000000
因此,现在如果我想让最相似的用户访问,例如45michael,我只需要这样做:

cosine_sim['45michael'].sort_values(ascending=False)[1:11]
返回如下输出:

product    63767    76863    84325    86217    86833    130365   537077   
username                                                                                           
45michael      0.0      1.0      0.0      0.0      1.0      1.0      0.0      
7762hc         0.0      0.0      0.0      0.0      0.0      0.0      0.0      
adrian12       0.0      0.0      0.0      0.0      0.0      0.0      0.0     
alicia7        0.0      0.0      0.0      0.0      0.0      1.0      0.0 
username   45michael  7762hc  adrian12   alicia7 
username                                                                                           
45michael   1.000000     0.0       0.0  0.577350     
7762hc      0.000000     0.0       0.0  0.000000     
adrian12    0.000000     0.0       0.0  0.000000    
alicia7     0.577350     0.0       0.0  1.000000
username
alicia7     0.577350
adrian12    0.000000
7762hc      0.000000
现在我想在原始df中迭代该用户名,但当我这样做时:

for username in similar_users:
...     print(username)
它返回给我这个:

0.5773502691896258
0.0
0.0
当我期待的是:

alicia7     
adrian12    
7762hc  

有人知道如何获取用户名而不是余弦相似度值吗?

尝试打印(username.index.values)您的输出是一个系列?你不能用数据帧索引吗?哦,天哪,我怎么没想到那个T.T