Unir pandas dataframes basado en valores de columna

Soy bastante nuevo en los marcos de datos de pandas y tengo algunos problemas al unir dos tablas.

El primer df tiene solo 3 columnas:

DF1: item_id position document_id 336 1 10 337 2 10 338 3 10 1001 1 11 1002 2 11 1003 3 11 38 10 146 

Y el segundo tiene exactamente las mismas dos columnas (y muchas otras):

 DF2 item_id document_id col1 col2 col3 ... 337 10 ... ... ... 1002 11 ... ... ... 1003 11 ... ... ... 

Lo que necesito es realizar una operación que, en SQL, se vería de la siguiente manera:

 DF1 join DF2 on DF1.document_id = DF2.document_id and DF1.item_id = DF2.item_id 

Y, como resultado, quiero ver DF2, complementado con la columna ‘posición’:

 item_id document_id position col1 col2 col3 ... 

¿Cuál es una buena manera de hacer esto usando pandas?

¡Gracias!

Creo que necesita merge con inner unión inner predeterminada, pero es necesario que no haya combinaciones duplicadas de valores en ambas columnas:

 print (df2) item_id document_id col1 col2 col3 0 337 10 s 4 7 1 1002 11 d 5 8 2 1003 11 f 7 0 df = pd.merge(df1, df2, on=['document_id','item_id']) print (df) item_id position document_id col1 col2 col3 0 337 2 10 s 4 7 1 1002 2 11 d 5 8 2 1003 3 11 f 7 0 

Pero si es necesario, position columna en la posición 3 :

 df = pd.merge(df2, df1, on=['document_id','item_id']) cols = df.columns.tolist() df = df[cols[:2] + cols[-1:] + cols[2:-1]] print (df) item_id document_id position col1 col2 col3 0 337 10 2 s 4 7 1 1002 11 2 d 5 8 2 1003 11 3 f 7 0