2017-09-18 1 views
1

これが最も効率的な方法であるとはわかりませんが、私は消費者をビン/バケットにグループ化するように取り組んでいます。これは私のコードであるPython Pandas:値が0の数値グループ化によって/ binを分類する

df.head() 

Best_ID_S| Dollar 
abc2464 0.00 
fdhg357 672.00 
hjg5235 250.00 
mjhur57 199.00 
erew3452 116.25 

この

は、私が働いているのDFです

bins = [0,250,500,750,1000,1500,2000,2500,3000,3500,4000,4500,5000,5500,6000,6500,7000,8000,1000000000000] 
#I didn't know how to create 8000+ so I just added a crazy number in the end, it works 

group_names = ['0-250','251-500','501-749','750-999','1000-1499','1500-1999','2000-2499','2500-2999','3000-3499','3500-3999','4000-4499','4500-4999','5000-5499','5500-5999','6000-6499','6500-6999','7000-7499','8000+'] 

categories = pd.cut(df_2014['Dollar'], bins, labels=group_names) 
df['Category'] = pd.cut(df['Dollar'], bins, labels=group_names) 
df['Buckets'] = pd.cut(df['Dollar'], bins) 

これは、私が得るものです私はdf.head()を実行するとき

Best_ID_S| Dollar | Category | Buckets 
abc2464 0.00  NaN 
fdhg357 672.00 501-749  (500, 750] 
hjg5235 250.00 0-250   (0, 250] 
mjhur57 199.00 0-250   (0, 250] 
erew3452 116.25 0-250   (0, 250] 

ドルの値が0の場合、バケット0〜250にする必要があります。しかし、私はNaNを取得しています。

答えて

4

デフォルト値rightのパラメータはtrueです。数学的には(は左のものを除いているので、左に値を入れるには[にする必要があります。だから、それはあなたが右のパラメータTrueを保つことによってTrueからinclude_lowestをも設定することができます包括的な左作るの包みなさい

df['Category'] = pd.cut(df['Dollar'], bins, labels=group_names,right=False) 
df['Buckets'] = pd.cut(df['Dollar'], bins,right=False) 
 
Best_ID_S| Dollar Category  Buckets 
0 abc2464 0.00 0-250 [0, 250) 
1 fdhg357 672.00 501-749 [500, 750) 
2 hjg5235 250.00 251-500 [250, 500) 
3 mjhur57 199.00 0-250 [0, 250) 
4 erew3452 116.25 0-250 [0, 250) 

にpd.cutを変更します。

+0

ありがとうございました! – jeangelj

1

8000以上のビンを作成するには、下限を含むため

bins = [0,250,500,750,1000,1500,2000,2500,3000,3500,4000,4500,5000,5500,6000,6500,7000,8000,np.inf] 

np.infとして最後のビンを使用することができ、あなたは、パラメータinclude_lowestを使用することができます= Trueの

df['Category'] = pd.cut(df['Dollar'], bins, labels=group_names, include_lowest=True) 
df['Buckets'] = pd.cut(df['Dollar'], bins, include_lowest=True) 

あなたが得ます

Best_ID_S Dollar Category Buckets 
0 abc2464  0.00 0-250 [0, 250] 
1 fdhg357  672.00 501-749 (500, 750] 
2 hjg5235  250.00 0-250 [0, 250] 
3 mjhur57  199.00 0-250 [0, 250] 
4 erew3452 116.25 0-250 [0, 250] 
+0

最後にこれを追加しました – Dark

+0

ああ、私はそれを見ました:) – Vaishali

+0

私はdup.loc [0、 'Buckets'] ' - '(-0.001 、250.0] '何の理由がありますか? – Dark

関連する問題