2016-04-04 24 views
5

の値によって1つのデータフレームの列の値を置き換え、最初のものは1000行を持っており、次のようになります。列Groupは時々繰り返して、異なる値を持っていますが、一般的な程度に私は2つのデータフレームを持っている別のデータフレーム

Date   Group   Family  Bonus 
2011-06-09  tri23_1  Laavin  456 
2011-07-09  hsgç_T2  Grendy  679 
2011-09-10  bbbj-1Y_jn Fantol  431 
2011-11-02  hsgç_T2  Gondow  569 

50のユニークな値。

秒のデータフレームは、これらの値に関連付けられているすべてのこれらの50個のユニークな値(50行)ともホテル、含まれています

Group    Hotel 
tri23_1   Jamel 
hsgç_T2   Frank 
bbbj-1Y_jn  Luxy 
mlkl_781   Grand Hotel 
vchs_94   Vancouver 

私の目標は、最初の列Groupに値を置き換えることですが第2のデータフレームの列Hotelの対応する値によって、または対応する値を有する列Hotelを作成する。私はちょうど

df1.loc[(df1.Group=df2.Group), 'Hotel']=df2.Hotel 

のような割り当てによってそれを作るしようとすると、私は、データフレームが同じサイズではないこと、エラーを持っているので、あなたは「グループ」にインデックスを設定した場合の比較は

答えて

9

ことはできません他のカラムはその後、dfをあなたの元DFにmapを使用して置き換えることができます「グループ」列:

In [36]: 
df['Group'] = df['Group'].map(df1.set_index('Group')['Hotel']) 
df 

Out[36]: 
     Date Group Family Bonus 
0 2011-06-09 Jamel Laavin 456 
1 2011-07-09 Frank Grendy 679 
2 2011-09-10 Luxy Fantol 431 
3 2011-11-02 Frank Gondow 569 
+0

が、私はエラーメッセージ、なぜ任意のアイデアを得ますか? InvalidIndexError:一意にインデックス付けされた一意のインデックスオブジェクトでのみ有効 – mkheifetz

+1

列に一意の値を持たない場合は、インデックスを – EdChum

+0

hmmmに設定できません。すべてが欲しい場所に1つの巨大なデータフレームがある場合、別のデータフレームの列の値に対応する値を取得するために、列(列はあなた自身で述べたように一意ではありません)ですか? – mkheifetz

0

あなたはまた、適用された辞書を作成して使用することができます

関連する問題