2017-06-25 5 views
1

私はデータフレームで繰り返します。各反復では、値が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の評価を得た映画を入手する必要があります。

user_ratingsSeriesある場合::だから私はあなたがboolean indexingを使用することができると思い、私は、データフレームを反復し、コードの上に私は(映画の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

あなたには、いくつかのデータと所望の出力を追加することはできますか? – jezrael

+0

2番目または最後のソリューションが機能しますか? – jezrael

+0

ありがとうございます。 user_ratings [(user_ratings == 5)| (user_ratings == 4)]は私のために働いていますuser_ratingsはシリーズです。しかし、結果としてインデックスと評価の両方を取得しています。私の質問で私の出力を参照してください。唯一のインデックスはどのように入手できますか? – Malintha

答えて

2

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 
関連する問題