2017-12-01 4 views
1

このKaggleデータセットに基づいてプロジェクトを行っています:https://www.kaggle.com/rush4ratio/video-game-sales-with-ratings/dataとデータをkNNモデルに入れる必要がありますが、これは現在の状態ではできません文字列の値を整数に変換します。パンダのデータフレームでクラスを数値に変換する

get_dummiesは、データセットに多数のカテゴリデータがあり、数千の列が作成されるため理想的ではありません。私は、例えば、数値表現に文字列を変換する方法を探しています:

Platform || Critic_Score || Publisher || Global_Sales 
Wii  ||  73  || Nintendo || 53 
Wii  ||  86  || Nintendo || 60 
PC  ||  80  ||Activision || 30 
PS3  ||  74  ||Activision || 35 
Xbox360 ||  81  || 2K  || 38 

私はこれに変身したいと思います:

Platform || Critic_Score || Publisher || Global_Sales 
    1  ||  73  ||  1  || 53 
    1  ||  86  ||  1  || 60 
    2  ||  80  ||  2  || 30 
    3  ||  74  ||  2  || 35 
    4  ||  81  ||  3  || 38 

私は、Python 3

を使用してい

ありがとう。

答えて

1

私はあなたがfactorizeが必要だと思う: C:\ユーザーは、ジョシュCharig \ Anaconda3 \ libが\助けを

df['Platform'] = pd.factorize(df['Platform'])[0] + 1 
df['Publisher'] = pd.factorize(df['Publisher'])[0] + 1 
print (df) 
    Platform Critic_Score Publisher Global_Sales 
0   1   73   1   53 
1   1   86   1   60 
2   2   80   2   30 
3   3   74   2   35 
4   4   81   3   38 

cols = ['Platform', 'Publisher'] 
df[cols] = df[cols].apply(lambda x: pd.factorize(x)[0] + 1) 

print (df) 
    Platform Critic_Score Publisher Global_Sales 
0   1   73   1   53 
1   1   86   1   60 
2   2   80   2   30 
3   3   74   2   35 
4   4   81   3   38 
+0

おかげで、私はこのエラーメッセージが表示されますが、これを試してみました\ site-packages \ ipykernel_launcher.py:1:SettingWithCopyWarning: 値は、DataFrameからスライスのコピーに設定しようとしています。 代わりに.loc [row_indexer、col_indexer] = valueを使用してみてください ドキュメントの注意点を参照してください:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy "" "IPythonカーネルを起動するためのエントリポイント また、実際のDFにはテキストを含むかなりの数のカラムがありますが、一気にすべてを変更する方法はありますか? – jceg316

+0

編集の回答を確認してください。 'this'](https://stackoverflow.com/a/46728170/2901002)、' copy'が必要です – jezrael

+0

これを助けてくれてありがとう、あなたのソリューションはうまくいきました。 – jceg316

関連する問題