GOOGLE ADS

jueves, 28 de abril de 2022

¿Transponer o fusionar para agrupar por columnas?

Tengo este marco de datos:

df = pd.DataFrame({ "cluster": ["A", "A", "A", "A", "A", "C", "C", "C", "C"], 
"col1": ["0", "0", "1", "1", "0", "1", "0", "1", "0"],
"col2": ["1", "1", "1", "1", "0", "1", "1", "1", "0"] })

y no puedo encontrar la mejor manera de obtener un resultado de marco de datos con este formato































columnagrupopromedio
col1UN0.4
col1C0.5
col2UN0.8
col2C0.75

Solución del problema

Parece que una combinación de melty groupby+ meanharía el truco. Tenga en cuenta que los valores de "col" son cadenas en su entrada, por lo que también tenemos que convertirlos en números enteros primero antes de calcular la media:

out = (df.melt(['cluster'], var_name='col')
.assign(value=lambda x: x['value'].astype(int))
.groupby(['col', 'cluster'], as_index=False).mean())

Producción:

 col cluster value
0 col1 A 0.40
1 col1 C 0.50
2 col2 A 0.80
3 col2 C 0.75

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...