我有以下问题。我有两个数据帧,并希望根据第一个数据帧中的两列和第二个数据帧中的一列合并它们:
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)
对于这种情况,pandas是否有一些标准方法?或者解决问题的唯一方法是在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]))
答案 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