Dividir (explotar) la entrada de la cadena del marco de datos pandas en filas separadas

tengo unpandas dataframe en el que una columna de cadenas de texto contiene valores separados por comas. Quiero dividir cada campo CSV y crear una nueva fila por entrada (suponga que los CSV están limpios y solo es necesario dividirlos en ','). Por ejemplo,a debe convertirseb:

In [7]: a
Out[7]: 
    var1  var2
0  a,b,c     1
1  d,e,f     2

In [8]: b
Out[8]: 
  var1  var2
0    a     1
1    b     1
2    c     1
3    d     2
4    e     2
5    f     2

Hasta ahora, he probado varias funciones simples, pero el.apply El método parece aceptar solo una fila como valor de retorno cuando se usa en un eje, y no puedo obtener.transform trabajar. ¡Cualquier sugerencia sería muy apreciada!

Ejemplo de datos:

from pandas import DataFrame
import numpy as np
a = DataFrame([{'var1': 'a,b,c', 'var2': 1},
               {'var1': 'd,e,f', 'var2': 2}])
b = DataFrame([{'var1': 'a', 'var2': 1},
               {'var1': 'b', 'var2': 1},
               {'var1': 'c', 'var2': 1},
               {'var1': 'd', 'var2': 2},
               {'var1': 'e', 'var2': 2},
               {'var1': 'f', 'var2': 2}])

Sé que esto no funcionará porque perdemos los metadatos de DataFrame al realizar una prueba numérica, pero debería darte una idea de lo que intenté hacer:

def fun(row):
    letters = row['var1']
    letters = letters.split(',')
    out = np.array([row] * len(letters))
    out['var1'] = letters
a['idx'] = range(a.shape[0])
z = a.groupby('idx')
z.transform(fun)

Respuestas a la pregunta(15)

Su respuesta a la pregunta