包含和排除在熊猫(python)中

代码计算所有用户的评级(user_id)我想仅计算ALLAN为sName的每个用户的评级.

主要代码

grouped_data = ratings['rating'].groupby(ratings['movie_id'])
average_ratings = grouped_data.mean()
movie_count = ratings.movie_id.value_counts()
higher_than_50_votes = movie_count.index[movie_count > 50]
average_ratings.ix[higher_than_50_votes].sort_values(ascending=False).head(5)

第一个表的一部分.

 user_id     movie_id  rating    
    196        242        3       
    22        302         3       
    90        377         1       
    10         51         2      
    2         346         1       
    1         474         4       
    8         265         2       
    4         465         5       
    2         451         3      
    1         451         5       

第二个表的一部分.

  user_id       Sname
    1|          AKERS
    2|          other
    3|          ALEXANDER
    4|          ALBERT  
    5|          ALBERT  
    6|          ANSEL   
    7|          ALLARD 
    8|          ALLAN 
    9|          ALLAN

最佳答案 几种方法:

1.在“user_id”上对评级数据框中的Sname列进行存档

ratings_with_names = ratings.merge(names, on='user_id')

这给你的东西:

    user_id     movie_id    rating  unix_timestamp  Sname
0   6           86          3       883603013       ANSEL
1   6           14          5       883599249       ANSEL
2   6           98          5       883600680       ANSEL
3   6           463         4       883601713       ANSEL 

所以现在很容易只用boolean indexing选择你需要的行

ratings_with_names[ratings_with_names.Sname == 'ALLAN']

2.找到与第二个数据帧中的条件匹配的user_id,并使用它来过滤第一个数据帧:

ratings[ratings.user_id.isin(names.ix[names.Sname == 'ALLAN', 'user_id'])]
点赞