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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta