Quiero fusionar dos marcos de datos diferentes, el segundo tiene algunas filas para completar en el primero.
df4 = pd.DataFrame({'a':['red','green','yellow','blue'],'b':[1,5,6,7],'c':[1,7,8,9]}) df5 = pd.DataFrame({'a':'red','b':44, 'c':55}, index=[0]) print(pd.merge(df4,df5, how='left', on='a'))Producción
a b_x c_x b_y c_y 0 red 1 1 44.0 55.0 1 green 5 7 NaN NaN 2 yellow 6 8 NaN NaN 3 blue 7 9 NaN NaNRendimiento esperado
abc 0 red 44 55 1 green 5 7 2 yellow 6 8 3 blue 7 9Reemplace - con np.nan y use combine_first :
df4.replace('-',np.nan,inplace=True) df4.combine_first(df5)huellas dactilares:
abc 0 red 44.0 55.0 1 green 5.0 7.0 2 yellow 6.0 8.0 3 blue 7.0 9.0Concatene y suelte los duplicados por la columna 'a'.
print(pd.concat([df5, df4]).drop_duplicates(['a'], keep='first'))Puedes usar DataFrame.update :
df4.update(df5)Producción:
>>> df4 abc 0 red 44.0 55.0 1 green 5 7 2 yellow 6 8 3 blue 7 9