熊猫:获取一系列提供多个过滤器的索引

时间:2017-06-25 06:09:48

标签: python pandas

我正在迭代一个数据帧。在每次迭代中,我需要得到值等于5或4的系列索引。下面的代码给出了值为5的索引(另一个问题:实际上我得到索引和值。另一个问题是得到只有索引。我试过print row[row ==5].index[0],但它不能帮我完成工作)

def get_top_rated_movies(user_ratings):
for index, row in user_ratings.iterrows():
    print row[row == 5]

我想我必须做row[row == 5 || row == 4]类似的事情,但不知道。

这里' user_ratings'是一个数据帧。每行都是一个用户,列是一个电影,我存储用户对电影的评级。我需要获得每个用户获得4或5个评级的电影。所以,我迭代数据帧,上面的代码给了我(电影ID和评级)

movie_id
1      5
9      5
13     5
15     5
16     5
19     5
32     5
42     5
45     5
48     5
50     5
55     5
57     5
59     5
87     5

1 个答案:

答案 0 :(得分:2)

我认为您可以使用boolean indexing

如果user_ratingsSeries

user_ratings[(user_ratings == 5) | (user_ratings == 4)]

或更好:

user_ratings[user_ratings.isin([4,5])]

如果需要索引过滤器:

user_ratings.index[(user_ratings == 5) | (user_ratings == 4)]
user_ratings.index[user_ratings.isin([4,5])]

或首先过滤Series,然后获取索引:

user_ratings[(user_ratings == 5) | (user_ratings == 4)].index
user_ratings[user_ratings.isin([4,5])].index