Python 合并两个具有不同左/右长度列表的数据帧

Python 合并两个具有不同左/右长度列表的数据帧,python,pandas,merge,Python,Pandas,Merge,我有以下问题。我有两个数据帧,希望根据第一个数据帧中的两列和第二个数据帧中的一列合并它们: 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', lef

我有以下问题。我有两个数据帧,希望根据第一个数据帧中的两列和第二个数据帧中的一列合并它们:

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])
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]))
此代码在之后不起作用

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']})
new2 = pd.DataFrame({0:['aq1','bq2','cq3'], 1:['la1','la2','la3']})
pd.merge(new1,new2, how='inner', left_on=[0,1], right_on=[0])
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]))

您可以在合并中进行求和,而不是创建新列

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

很容易!非常感谢。