Pandas: desapilar valores de columna en columnas nuevas
Tengo un gran marco de datos y estoy almacenando muchos valores redundantes que dificultan el manejo de mis datos. Tengo un marco de datos de la forma:
import pandas as pd
df = pd.DataFrame([["a","g","n1","y1"], ["a","g","n2","y2"], ["b","h","n1","y3"], ["b","h","n2","y4"]], columns=["meta1", "meta2", "name", "data"])
>>> df
meta1 meta2 name data
a g n1 y1
a g n2 y2
b h n1 y3
b h n2 y4
donde tengo los nombres de las nuevas columnas en las que me gustaríaname
y los datos respectivos endata
.
Me gustaría producir un marco de datos del formulario:
df = pd.DataFrame([["a","g","y1","y2"], ["b","h","y3","y4"]], columns=["meta1", "meta2", "n1", "n2"])
>>> df
meta1 meta2 n1 n2
a g y1 y2
b h y3 y4
Las columnas llamadasmeta
son alrededor de más de 15 columnas que contienen la mayoría de los datos, y no creo que sean particularmente adecuadas para la indexación. La idea es que tengo muchos datos repetidos / redundantes almacenados enmeta
por el momento y me gustaría producir el marco de datos más compacto presentado.
He encontrado algunas preguntas similares, pero no puedo determinar qué tipo de operaciones necesito hacer: pivotar, volver a indexar, apilar o desapilar, etc.
PD: los valores del índice original no son importantes para mis propósitos.
Cualquier ayuda sería muy apreciada.
La pregunta que creo está relacionada:
Creo que la siguiente Q está relacionada con lo que estoy tratando de hacer, pero no puedo ver cómo aplicarla, ya que no quiero producir más índices.
Python Pandas: ¿cómo desapilar una tabla dinámica con dos valores y cada valor se convierte en una nueva columna?