¿Cómo se puede agregar datos nuevos y ya existentes provenientes de múltiples dataframes en un único dataframe?
Digamos que tengo un main
df1
:
Nombre: | ID | ID2 | puntuación |
---|---|---|---|
Michael | 1 | 01 | 100 |
Robert | 12 | 012 | 80 |
William | 123 | 65 | |
Jul | 01234 | 87 |
y luego quiero agregar df2
:
Nombre: | ID | ID2 | puntuación |
---|---|---|---|
Jul | 1234 | 01234 | 87 |
William | 123 | 0123 | 80 |
Steven | 12345 | 012345 | 99 |
Entonces, en el caso en que df1
sea mi dataframe main
, quiero agregar los nuevos valores de df2
a df1
. En el caso en que el valor de nombre
en df1
sea nuevo, quiero que se agregue al final de df1
. En el caso en que el valor de nombre
ya exista en df1
, quiero que la fila actual se sobrescriba con el/los nuevos valores de df2
y permanezca en la misma fila en la que estaba antes de agregar los valores de df2
.
Entonces, mi final_df
se vería así:
Nombre: | ID | ID2 | puntuación |
---|---|---|---|
Michael | 1 | 01 | 100 |
Robert | 12 | 012 | 80 |
William | 123 | 0123 | 80 |
Jul | 1234 | 01234 | 87 |
Steven | 12345 | 012345 | 99 |
He intentado:
pd.concat([df1, df2])
- Pero esto funciona en el caso en que estamos agregando datos nuevos al dataframe. En el caso de agregar ‘Jul’ y ‘William’ de df2 a nuestro df1, quiero sobrescribir esencialmente los datos actuales que están en df1 para ‘Jul’ y ‘William’, ya que estos valores de nombre ya existen en nuestro df1
¿Hay alguna solución mejor? Gracias de antemano
davy.ai
Sí, puedes lograr esto utilizando
pd.concat()
ydf.drop_duplicates()
juntos. Aquí te explico cómo:La función
pd.concat()
concatenarádf1
ydf2
, lo que resultará en el siguiente dataframe:Luego,
df.drop_duplicates()
elimina las filas duplicadas basándose en la columnaName
y conserva la última ocurrencia, lo que resulta en el siguiente dataframe final:Esto te proporciona la salida deseada donde las filas existentes se sobrescriben con nuevos valores y las filas nuevas se agregan al final del dataframe.