2017-05-24 20 views
1

私はパンダのデータフレームを持ち、カラムがageです。私はそれを特定の範囲で区切られたカテゴリ値にエンコードしたいと思います。たとえば、15歳未満は0、15〜30は1に変更するなどです。パンダを使用して値の範囲をエンコードする方法

私は

age = X.loc[:, 'Age'] 

age[ age<15 ] = 0 
age[ (15<age) & (age<=30) ] = 1 
age[ (30<age) & (age<=50) ] = 2 
age[ (50<age) & (age<=80) ] = 3 

&andの使用についての巨大な混乱を経て)これを行うには、この方法を見つけ、これはので、このための最良の方法ですか? LabelEncoderなどでこれを行うことはできますか?

答えて

2

あなたはcutを使用することができます。

df = pd.DataFrame({'Age':[0,1,14,15,30,31,50,51,79,80]}) 

bins = [0,14,30,50,80] 
labels=[0,1,2,3] 
df['bins'] = pd.cut(df['Age'], bins=bins, labels=labels, include_lowest=True) 
print (df) 
    Age bins 
0 0 0 
1 1 0 
2 14 0 
3 15 1 
4 30 1 
5 31 2 
6 50 2 
7 51 3 
8 79 3 
9 80 3 
+0

はそれがなく、この警告で働いていただきありがとうございます。私は 'df ['Bins']'を 'df.iloc [:, 'Bins']'に変更しようとしましたが、やはり同じ警告が出ているようです。私はこれについて心配すべきでしょうか? 'SettingWithCopyWarning: 値は、DataFrameからスライスのコピーに設定しようとしています。 .locを使用してみてください[row_indexer、col_indexer] = valueの代わりに ' –

+0

私はコードに問題があると思いますが、私は助けて欲しいです[これ](https://stackoverflow.com/questions/38147027/action-with-pandas-settingwithcopywarning/38147527#38147527) – jezrael

関連する問題