2017-05-09 24 views
1

次の問題があります。私は2つのデータフレームを持ち、最初のデータフレームに第二のデータフレーム内の1つの列に2列に基づいてそれらを統合したいと思います:異なるleft_onとright_onの長さのリストを持つ2つのデータフレームを結合する

import pandas as pd 

new1 = pd.DataFrame({0:['a','b','c'], 1:['q1','q2','q3'], 2:['t3','t2','t1']}) 
new2 = pd.DataFrame({0:['aq1','bq2','cq3'], 1:['la1','la2','la3']}) 
pd.merge(new1,new2, how='inner', left_on=[0,1], right_on=[0]) 

このコードは

ValueError: len(right_on) must equal len(left_on) 

ので、動作しません。パンダにはこの場合のいくつかの標準的な方法がありますか?または問題を解決する唯一の方法は、NEW1のデータフレームに追加列を作成することです:

import pandas as pd 

new1 = pd.DataFrame({0:['a','b','c'], 1:['q1','q2','q3'], 2:['t3','t2','t1']}) 
new1[3] = new1[0] + new1[1] 
new2 = pd.DataFrame({0:['aq1','bq2','cq3'], 1:['la1','la2','la3']}) 
print(pd.merge(new1,new2, how='inner', left_on=[3], right_on=[0])) 

答えて

1

あなたは新しい列を作成するのではなく、マージで合計を行うことができます。

pd.merge(new1,new2, how='inner', left_on=[new1[0]+new1[1]], right_on=[0]) 

あなたが

0_x 1_x 2 0_y 1_y 
0 a q1 t3 aq1 la1 
1 b q2 t2 bq2 la2 
2 c q3 t1 cq3 la3 
+1

だから、簡単に入手します!ありがとうございました! – Trarbish

関連する問題