2016-11-18 7 views
1

名前がdf1とdf2の2つのデータフレームがあります。Pythonで複数の列に2つのデータフレームを結合する

DF1 =

col1 col2 count 
0 1  36 200 
1 12  15 200 
2 13  17 100 

DF2 =

product_id product_name 
0  1   abc 
1  2   xyz 
2  3   aaaa 
3  12   qwert 
4  13   sed 
5  15   qase 
6  36   asdf 
7  17   zxcv 

COL1とCOL2のエントリはDF2からPRODUCT_IDあります。

次の列とエントリを持つ新しいデータフレーム 'df3'を作成します。

DF3 =

col1 | col1_name | col2 | col2_name | count 
0 1 | abc  | 36 | asdf | 200 
1 12 | qwert | 15 | qase | 200 
2 13 | sed  | 17 | zxcv | 100 

すなわちdf2からproduct_idcol1 & col2値に等しく、どこcol1_namecol2_nameを加えます。

がでそうすることが可能です:パンダDFとPythonの

df3 = pd.concat([df1, df2], axis=1) 

私の知識は初心者レベルです。 これを行う方法はありますか?前もって感謝します。

答えて

3

私はあなたがdf2から生成dictmapを使用して、sort_indexで列名を並べ替えることができると思う:私はしたい場合

d = df2.set_index('product_id')['product_name'].to_dict() 
print (d) 
{1: 'abc', 2: 'xyz', 3: 'aaaa', 36: 'asdf', 17: 'zxcv', 12: 'qwert', 13: 'sed', 15: 'qase'} 

df1['col1_name'] = df1.col1.map(d) 
df1['col2_name'] = df1.col2.map(d) 
df1 = df1.sort_index(axis=1) 
print (df1) 
    col1 col1_name col2 col2_name count 
0  1  abc 36  asdf 200 
1 12  qwert 15  qase 200 
2 13  sed 17  zxcv 100 

df1 = df1.drop(['col1','col2'], axis=1) 
print (df1) 
    col1_name col2_name count 
0  abc  asdf 200 
1  qwert  qase 200 
2  sed  zxcv 100 
+0

はい先生、これは、それとは別に、働いています'col1_name | col2_name |私の最終結果では数えます。 'df1.drop( 'col1'、 'col2')' – Shubham

+0

の方が良い解決策であると思います。私はそれを答えに追加します。 – jezrael

+0

が役に立ちましたmap() – Shubham

関連する問題