GOOGLE ADS

lunes, 25 de abril de 2022

Agregar filas en el marco de datos si no existen en otro marco de datos pandas

Básicamente, tengo 2 marcos de datos, y df1tengo 5 semanas solo.df2df1

df2Tengo la misma columna de año /semana con una columna de producto.

Entonces, si una de esas filas df2no está en df1, estoy buscando agregar el producto en ese año/semana respectivamente.

df1:
+----+-------------+
| | year/week |
+====+=============+
| 0 | 2022/01 |
+----+-------------+
| 1 | 2022/02 |
+----+-------------+
| 2 | 2022/03 |
+----+-------------+
| 3 | 2022/04 |
+----+-------------+
| 4 | 2022/05 |
+----+-------------+
df2:
+----+-------------+-----------+
| | year/week | product |
+====+=============+===========+
| 0 | 2022/01 | A |
+----+-------------+-----------+
| 1 | 2022/02 | A |
+----+-------------+-----------+
| 2 | 2022/01 | B |
+----+-------------+-----------+
| 3 | 2022/04 | B |
+----+-------------+-----------+
| 4 | 2022/05 | C |
+----+-------------+-----------+

este es el resultado esperado que quiero obtener, ¿hay una forma pitónica de obtener esto?

+----+-------------+-----------+
| | year/week | product |
+====+=============+===========+
| 0 | 2022/01 | A |
+----+-------------+-----------+
| 1 | 2022/02 | A |
+----+-------------+-----------+
| 2 | 2022/03 | A |
+----+-------------+-----------+
| 3 | 2022/04 | A |
+----+-------------+-----------+
| 4 | 2022/05 | A |
+----+-------------+-----------+
| 5 | 2022/01 | B |
+----+-------------+-----------+
| 6 | 2022/02 | B |
+----+-------------+-----------+
| 7 | 2022/03 | B |
+----+-------------+-----------+
| 8 | 2022/04 | B |
+----+-------------+-----------+
| 9 | 2022/05 | B |
+----+-------------+-----------+
| 10 | 2022/01 | C |
+----+-------------+-----------+
| 11 | 2022/02 | C |
+----+-------------+-----------+
| 12 | 2022/03 | C |
+----+-------------+-----------+
| 13 | 2022/04 | C |
+----+-------------+-----------+
| 14 | 2022/05 | C |
+----+-------------+-----------+


Solución del problema

Puede crear un producto cartesiano a partir de la columna "año/semana" df1y los "productos" únicos df2y convertirlo en un DataFrame. Puede omitir sort_valuessi no le importa especialmente el orden.

out = (pd.MultiIndex.from_product([df1['year/week'], df2['product'].unique()], 
names=['year/week','product']).to_frame()
.reset_index(drop=True).sort_values(by='product', ignore_index=True))

Producción:

 year/week product
0 2022/01 A
1 2022/02 A
2 2022/03 A
3 2022/04 A
4 2022/05 A
5 2022/01 B
6 2022/02 B
7 2022/03 B
8 2022/04 B
9 2022/05 B
10 2022/01 C
11 2022/02 C
12 2022/03 C
13 2022/04 C
14 2022/05 C

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...