2017-04-09 28 views
0

こんにちは、私は2つのデータフレームを持っています。最初はidで別のdfでグループ化して作成したデータフレームです。2つのデータフレームを列とインデックスにマージする

DF1 'ID' '名前' と '国':

  paid  due  
id   
3  13.000000  5.000000  
2  437.000000 5.000000  
5  90.000000  5.000000  
1  60.000000  5.000000  
4  675.000000 5.000000  

もう一つは3列があり、通常のデータフレームです。

DF2:

id name  country 
1 'AB'  'DE' 
2 'CD'  'DE' 
3 'EF'  'NL' 
4 'HAH'  'SG' 
5 'NOP'  'NOR' 

だから、私は何をしようとしていたこと(1秒で最初のDFとの列のインデックスです)のID番号に基づいて、第一のデータフレームに「名前」列を追加することです。

pd.merge(df1, df2['name'], left_index=True, right_on='id') 
しかし、私はあなたが dictによってマップに renameを使用することができ、エラー

ValueError: can not merge DataFrame with instance of type <class 'pandas.core.series.Series'> 
+0

あなたの投稿に完全なエラースタックトレースを含めてください。 – DyZ

+0

私はそれを追加しました、見てください。 –

+0

あなたのデータベースにはどの名前がありますか? '' title ''という名前の列名は表示されません。データがコードスニペットと一貫していることを確認してください。 – DyZ

答えて

1

を得る: は、だから私はこのコードが動作するだろうと思った

df1['name'] = df1.rename(index=df2.set_index('id')['name']).index 
print (df1) 
    paid due name 
id     
3 13.0 5.0 'EF' 
2 437.0 5.0 'CD' 
5 90.0 5.0 'NOP' 
1 60.0 5.0 'AB' 
4 675.0 5.0 'HAH' 
0

わかりましたので、私は私ということを考え出しそのようにして実際には1列のデータフレームを得ることはできませんが、必要な列が1つだけ含まれるようにdf2を再作成できます:

df2=df2[['id', 'name']] 
pd.merge(df1, df2, left_index=True, right_on='id') 

もうエラーはありません。

関連する問題