我正在迭代一个数据帧。在每次迭代中,我需要得到值等于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
答案 0 :(得分:2)
我认为您可以使用boolean indexing
:
如果user_ratings
为Series
:
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