私はpandasデータフレームで作業するpythonに問題があります。私はモデルを予測するモデルを学習するマシンを作ろうとしています。列車のデータフレームにサーフェスの列があり、テストデータフレームにサーフェスの列がありません。だから、列車内のサーフェスに基づいていくつかのフィーチャを作成したいと思います。groupbyと2つの列でマップする方法pandasデータフレーム
train['error_cat1'] = abs(train.groupby(train['cat1'])['surface'].transform('mean') - train.surface.mean())
ここで私はgroubyの値をsufaceの平均で「cat」というフィーチャーで設定しました。クール
今私もテストに追加する必要があります。したがって、このメソッドを使用して、各グループの列車の値をテスト行にマップします。
mp = {k: g['error_cat1'].tolist()[0] for k,g in train.groupby('cat1')}
test['error_cat1'] = test['cat1'].map(mp)
これまでのところ問題ありません。今、私はgroupbyで2つの列を使用します。
train['error_cat1_cat2'] = abs(train.groupby(train[['cat1','cat2']])['surface'].transform('mean') - train.surface.mean())
しかし、私はテストデータフレームのためのマップ方法はわかりません。この問題を扱うのを手伝ったり、私ができるように他の方法を教えてください。例えば
おかげ
私の列車が
+------+------+-------+
| Cat1 | Cat2 | surface |
+------+------+-------+
| 1 | 3 | 10 |
+------+------+-------+
| 2 | 2 | 12 |
+------+------+-------+
| 3 | 1 | 12 |
+------+------+-------+
| 1 | 3 | 5 |
+------+------+-------+
| 2 | 2 | 10 |
+------+------+-------+
| 3 | 2 | 13 |
+------+------+-------+
私のテストは今、私は意味が表面例えばCAT1とCAT2の表面を意味GROUPBYを行うだろう
+------+------+
| Cat1 | Cat2 |
+------+------+
| 1 | 2 |
+------+------+
| 2 | 1 |
+------+------+
| 3 | 1 |
+------+------+
| 1 | 3 |
+------+------+
| 2 | 3 |
+------+------+
| 3 | 1 |
+------+------+
です(cat1、cat2)=(1,3)は(10 + 5)/ 2 = 7.5
今、私はテストに行く必要がありますこの値を(cat1、cat2)=(1,3)行にマップします。
私はあなたが私を持っていることを願っています。
誰もがそれを実行し、ソリューションを作成することができますので、あなたは、例えば、データを単純なコードを作成することができます。 – furas