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

时间:2016-11-07 22:56:47

标签: python pandas

代码计算所有用户的评级(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 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点:

1.在评级数据框中找到Sname列,在" user_id"

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'])]