2016-11-17 9 views
1

カラムに一定量の固有値が含まれていない場合、pandasデータフレームのカラムをダミーに変換する関数を作成しようとしました。 My機能は、現在の状態で次のようになります。カラム内のxユニークな値の下でデータフレームカラムをダミーに変換する

for i in range(columns): 
    unique_values = df1[[i]].apply(pd.Series.nunique) # then we find unique values within column i 

    unique_values1 = unique_values.iloc[0] # then we select unique values within column i 

    if unique_values1 < 5: # if unique values is below 8 then we dummy that variable 

     dummys = pd.get_dummies(df1.ix[:, i]) # we make specific dummy for column i 

     df2 = pd.concat([df2, dummys], axis=1) # we merge dummy's onto original dataframe 

else: 

    pass 

しかし、私はこの問題にクリーンな解決策があるかもしれないと思います。

答えて

0

これは、実際には1本のライナーですべて実行できます。

df = pd.read_clipboard() 

# If nunique is < 3, then we encode. Here only column 'a' should be encoded 
cutoff = 3 

pd.get_dummies(df, columns=df.columns[df.apply(pd.Series.nunique) < cutoff], drop_first=True) 

がここに結果だ:

 a  b  c 
0 Var2 Var1 Var3 
1 Var1 Var2 Var2 
2 Var1 Var2 Var1 
3 Var1 Var3 Var1 
4 Var1 Var2 Var1 

するのは、それをロードして見てみましょう:

は、ここではいくつかのダミーデータです

 b  c a_Var2 
0 Var1 Var3  1 
1 Var2 Var2  0 
2 Var2 Var1  0 
3 Var3 Var1  0 
4 Var2 Var1  0 
+0

非常に素晴らしいです!ありがとう! – Bakerboy

+0

私に感謝したい場合は、答えを[upvote](http://stackoverflow.com/help/why-vote)し、それを受け入れたものとしてマークしてください。ありがとう! –

+0

これでやり直してくれてありがとう – Bakerboy

関連する問題