Asignación de valores y fusión de marcos de datos basados ​​en múltiples valores de columna

Tengo los siguientes marcos de datos:

df1: dataframe con notas críticas del paciente

AREA DATE_TIME CRITICAL ISSUE NOTES 0013 11/6/2017 2:25:00 PM Nurse attended to the patient 1121 10/23/2017 6:43:00 AM Completed an ER 1121 10/2/2017 9:30:00 PM Admitted 

df2: otros detalles del paciente

 ZIP TIME_NOTED NAME OCCUPIED STATE 4568 10/1/2017 10:04:00 AM Chris Y NORMAL 1121 10/23/2017 6:43:00 AM Nancy Y CRITICAL 1121 10/2/2017 9:30:00 PM Derek N CRITICAL 

Tengo que asignar los registros en df2 utilizando el código DATE_TIME y AREA de df1 y también conservar todas las demás columnas en ambos marcos de datos. Intenté fusionarme en varias columnas pero no funcioné como se esperaba.

 new_df = pd.merge(df1, df2, how='right', left_on=['Date_Time','AREA'], right_on = ['ZIP','TIME_NOTED']) 

Si coloca las columnas en el mismo orden para left / right_on (area / zip luego fecha / hora anotada) debería funcionar. También cambié la combinación a una interna, por lo que solo obtienes registros con el mismo código postal / área y fecha y hora anotados.

 new_df = pd.merge(df1, df2, how='inner', left_on = ['AREA','DATE_TIME'], right_on = ['ZIP','TIME_NOTED']) 

Otra posible solución sería crear una columna de “ID” y fusionarla.

 df1['ID'] = df1['AREA'].astype(str) + '_' + df1['DATE_TIME'].astype(str) df2['ID'] = df2['ZIP'].astype(str) + '_' + df2['TIME_NOTED'].astype(str) 

Ahora fusionar en las IDs

 new_df = pd.merge(df1, df2, how = 'inner',left_on = ['ID'], right_on = ['ID']) 

Esto debería producir la misma tabla (con la adición de una columna de ID).