2016-05-30 24 views
0

Pythonのパンダのデータフレーム「DF」で、私は以下の3つの列があります。Pythonのパンダのデータフレームのインデックスが一致

song_id | user_id | play_count 

を私が発明した評価表を持っているユーザーは耳を傾け回数(play_countに基づきます曲):

play_count | rating 
1-33  | 1 
34-66  | 2 
67-99  | 3 
100-199 | 4 
>200  | 5 

再生回数に基づいてこの表に「評価」列を追加しようとしています。 たとえば、play_count = 2の場合、レーティングは「1」になります。

は、だから、私は試合/インデックスでこれを行うだろうExcelでこの

song_id | user_id | play_count | rating 
X232 | u8347 | 2   | 1 
X987 | u3701 | 50   | 2 
X271 | u9327 | 10   | 1 
X523 | u1398 | 175  | 4 

のように見えますが、私は、Python /パンダでどのように行うのか分かりません。

if/elseループとisinの組み合わせですか?

答えて

3

あなたは、あなたのようなそれらの範囲の終点はExcelで必要となる必要があります。

import numpy as np 
bins = [1, 33, 66, 99, 199, np.inf] 

次にあなたが対応する評価を見つけるためにpd.cutを使用することができます。

pd.cut(df['play_count'], bins=bins, include_lowest=True, labels=[1, 2, 3, 4, 5]).astype(int) 

を私はpd.cut戻りますので、最後にastype(int)を追加しましたあなたはそれで算術計算を行うことはできませんので、カテゴリのシリーズ。

+0

偉大な、私はちょうどこれdf ['rating'] = pd.cut(df ['play_count']、bin = bin、include_lowest = True、labels = [1、2、3、4、5])でした。 astype(int)とそれは動作します!クイック返信ありがとう、非常に助けてくれてありがとう!コンテンツフィルタリングの推奨モデル – jeangelj

+0

を作成できます。ようこそ。あなたのモデルに幸運を。 :) – ayhan

0

私はあなたが最小/最大値を使用するようにplay_countテーブルを変更した場合、このように考える:次に、あなたが何かを行うことができます

もちろんの
min | max | rating 
1 |33 | 1 
34 |66 | 2 
67 |99 | 3 
100 |199 | 4 
200 |np.inf | 5 

あなたはimport numpy as np

する必要があります。

playcountこのように:

df['rating'] = play_count[(df['play_count'] >= play_count['min']) & (df['play_count'] <= play_count['max'])].rating 
関連する問題