Inserción de datos por filas y columnas utilizando dos dataframes.
A continuación se encuentran los dos marcos de datos de entrada df1 y df2:
df1
Cat1 Cat2 Cat3 A1 A2 A3 Total
Sam a+b p+q 50 25 25 4
Joy a+b r+s 0 25 75 4
Roy c+d p+q 33.3 0 66.7 3
df2
Cat1 Cat2 Cat3 B1 B2 B3 Total
Sam a+b p+q 0 0 4 4
Joy a+b r+s 1 0 3 4
Roy c+d p+q 0 0 3 3
Los valores de A1, A2, A3 de df1 deben ser rellenados utilizando los valores no cero de B1, B2, B3 de df2.
La salida esperada es la siguiente:
Cat1 Cat2 Cat3 A1B1 A1B2 A1B3 A2B1 A2B2 A2B3 A2B3 A3B1 A3B2 A3B3
Sam a+b p+q 0 0 50 0 0 25 0 0 0 25
Joy a+b r+s 0 0 0 25 0 0 0 0 0 75
Roy c+d p+q 0 0 33.3 0 0 0 0 0 0 66.7
davy.ai
Para lograr la salida deseada, necesitamos combinar los dos dataframes,
df1
ydf2
, en base a “Cat1”, “Cat2” y “Cat3”. Después de eso, crearemos un nuevo dataframe con las columnas requeridas multiplicando los valores diferentes de cero dedf2
con sus valores correspondientes endf1
.El código para lograr esto es el siguiente:
La salida del código anterior será la siguiente:
Como podemos ver, la salida coincide con la salida deseada.