2 回答
TA贡献1821条经验 获得超4个赞
与内部连接一起使用DataFrame.merge,只有必要的重命名列:
df = df2.rename(columns={'col1':'Col1','col2':'Col2'}).merge(df1, on=['Col1','Col2'])
#on should be omited, then merge by intersection of columns of df1, df2
#df = df2.rename(columns={'col1':'Col1','col2':'Col2'}).merge(df1)
print (df)
Col1 Col2 Col3
0 A 4 ab
1 B 3 jd
另一个想法是使用left_on和right_on参数,然后删除具有名称的列df2.columns:
df = (df2.merge(df1, left_on=['col1','col2'],
right_on=['Col1','Col2']).drop(df2.columns, axis=1))
print (df)
Col1 Col2 Col3
0 A 4 ab
1 B 3 jd
如果列名相同:
print (df2)
Col1 Col2
1 A 4
2 B 3
df = df2.merge(df1, on=['Col1','Col2'])
#df = df2.merge(df1)
print (df)
Col1 Col2 Col3
0 A 4 ab
1 B 3 jd
TA贡献1921条经验 获得超9个赞
您也可以使用 join 进行内部连接
dfR = df1.join( df ,on=['Col1','Col2'] ,how='inner',rsuffix='_x')
dfR[['Col1','Col2','Col3']]
这也会给你同样的结果
Col1 Col2 Col3
1 A 4 ab
2 B 3 jd
有关更多详细信息,请查看这些链接加入文档和 示例
添加回答
举报