Soluciones eficientes insertar o actualizar pandas fila

Tengo un dataframe con la siguiente estructura:

0 1 2 0 0.00086076 500.00000000 [] 1 0.00086075 819.00000000 [] 2 0.00086072 1162.00000000 [] 3 0.00086071 20.00000000 [] 4 0.00086069 10170.00000000 [] 5 0.00086067 18.00000000 [] 

Luego tengo otro dataframe con valores de actualización:

  0 1 2 0 0.00086071 50.00000000 [] 1 0.00086068 81.00000000 [] 

Está ordenado en la columna 0 y debo combinar los dos de la siguiente manera:

  0 1 2 0 0.00086076 500.00000000 [] 1 0.00086075 819.00000000 [] 2 0.00086072 1162.00000000 [] 3 0.00086071 50.00000000 [] 4 0.00086069 10170.00000000 [] 5 0.00086068 81.00000000 [] 6 0.00086067 18.00000000 [] 

Entonces, si un valor coincide con uno en la columna 0, debería actualizar la columna 1; en caso contrario, debería insertar una nueva fila y ordenar nuevamente.

¿Hay una forma eficiente o función predefinida para hacer esto?

Creo que necesitas:

  • concat ambos DataFrame s juntos
  • drop_duplicates para eliminar filas originales con los mismos valores en la columna 0
  • sort_values por columna 0
  • reset_index para valores de índice únicos

 df = (pd.concat([df1, df2]) .drop_duplicates([0] , keep='last') .sort_values(0 , ascending=False) .reset_index(drop=True)) print (df) 0 1 2 0 0.000861 500.0 [] 1 0.000861 819.0 [] 2 0.000861 1162.0 [] 3 0.000861 50.0 [] 4 0.000861 10170.0 [] 5 0.000861 81.0 [] 6 0.000861 18.0 [] 

Lo que necesitas es añadir y soltar duplicados.

 df = df1.append(df2) df = df.drop_duplicates('0', keep='last').sort_values('0', ascending= False) 

¡Pero de acuerdo con esta respuesta de Jezrael, la mina más rápida y eficiente es solo una alternativa!