Reformando el dataframe de pandas desde la tabulación de crosstabulación al formato largo.
Tengo un dataframe similar al siguiente:
d = {'Country': ['USA', 'France', 'Germany'], 'USA': [np.nan, 2, 5], 'France': [3, np.nan, 7], 'Germany': [3.5, 4, np.nan]}
df = pd.DataFrame(data=d)
Country USA France Germany
0 USA NaN 3 3.5
1 France 2 NaN 4
2 Germany 5 7 NaN
Deseo remodelarlo al siguiente formato:
d = {'Country': ['USA', 'USA', 'France', 'France', 'Germany', 'Germany'], 'Country2': ['France', 'Germany', 'USA', 'Germany', 'USA', 'France'],
'Value': [3, 3.5, 2, 4, 5, 7]}
df = pd.DataFrame(data=d)
Country Country2 Value
0 USA France 3.0
1 USA Germany 3.5
2 France USA 2.0
3 France Germany 4.0
4 Germany USA 5.0
5 Germany France 7.0
¿Cómo puedo girar/moldear/pivotar el dataframe para lograr este resultado?
davy.ai
Para remodelar el dataframe desde el formato original al formato deseado, podemos utilizar la función melt en pandas.
Primero, debemos identificar las variables que queremos mantener fijas (es decir, Country) y las variables que queremos remodelar (es decir, USA, France y Germany). Utilizamos la función melt para convertir el formato horizontal en un formato vertical.
Luego, renombramos las columnas para reflejar la nueva estructura del dataframe.
Finalmente, utilizamos la función pivot para remodelar el dataframe desde formato largo a formato ancho.
Aquí está el código para lograr esto:
El resultado debería ser: