2017-05-31 5 views
1

パンダのデータフレームでワンホットエンコード列にしたい。その列の値の中には発生率が低いものがありますので、それらを同じカテゴリとして扱いたいと思います。 one-hot-encoderやget_dummiesメソッドを使ってこれを行う方法ですか? 私が考え出す1つの方法は、エンコードする前にこれらの値をdictに置き換えることです。どんな提案も高く評価されます。いくつかの値を同じカテゴリとして扱いながら、列内の値をワンホットエンコードする方法

答えて

1

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

df = pd.DataFrame({'A':[1,2,3,4,5,6,6,5,4]}).astype(str) 
print (df) 
    A 
0 1 
1 2 
2 3 
3 4 
4 5 
5 6 
6 6 
7 5 
8 4 

まずvalue_countsboolean indexingでtreshold以下のすべての値を取得し、dict comprehension0のように同じスカラー値を追加します。最後replace

tresh = 2 
s = df['A'].value_counts() 
d = {x:0 for x in s[s < tresh].index} 
print (d) 
{'1': 0, '3': 0, '2': 0} 

df = df.replace(d) 
print (df) 
    A 
0 0 
1 0 
2 0 
3 4 
4 5 
5 6 
6 6 
7 5 
8 4 

print (pd.get_dummies(df, prefix='', prefix_sep='')) 
    0 4 5 6 
0 1 0 0 0 
1 1 0 0 0 
2 1 0 0 0 
3 0 1 0 0 
4 0 0 1 0 
5 0 0 0 1 
6 0 0 0 1 
7 0 0 1 0 
8 0 1 0 0 
+0

私のケースでは動作します!ありがとうございました –

+0

幸いです、幸運を助けることができます! – jezrael

関連する問題