Разбить (взорвать) строку ввода в панде в кадре данных на отдельные строки

у меня естьpandas dataframe в котором один столбец текстовых строк содержит значения, разделенные запятыми. Я хочу разделить каждое поле CSV и создать новую строку для каждой записи (предположим, что CSV чистые и их нужно разделять только на ','). Например,a должен стать:b

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

До сих пор я пробовал различные простые функции, но.apply Кажется, что метод принимает только одну строку в качестве возвращаемого значения, когда он используется на оси, и я могу 'т получить.transform работать. Любые предложения будут высоко ценится!

Пример данных:

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}])

Я знаю это победилоЭто работает, потому что мы теряем метаданные DataFrame, проходя через numpy, но это должно дать вам представление о том, что я пытался сделать:

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)

Ответы на вопрос(15)

Ваш ответ на вопрос