Перебирайте строки и расширяйте информационный фрейм панд

У меня есть pandas dataframe со столбцом, содержащим значения или списки значений (неодинаковой длины). Я хочу «развернуть» строки, чтобы каждое значение в списке становилось одним значением в столбце. Пример говорит сам за себя:

dfIn = pd.DataFrame({u'name': ['Tom', 'Jim', 'Claus'],
 u'location': ['Amsterdam', ['Berlin','Paris'], ['Antwerp','Barcelona','Pisa'] ]})

    location     name
0   Amsterdam   Tom
1   [Berlin, Paris] Jim
2   [Antwerp, Barcelona, Pisa]  Claus

Я хочу превратить в:

dfOut = pd.DataFrame({u'name': ['Tom', 'Jim', 'Jim', 'Claus','Claus','Claus'],
u'location': ['Amsterdam', 'Berlin','Paris', 'Antwerp','Barcelona','Pisa']})

    location     name
0   Amsterdam   Tom
1   Berlin   Jim
2   Paris   Jim
3   Antwerp Claus
4   Barcelona   Claus
5   Pisa    Claus

Сначала я попытался использовать apply, но, насколько я знаю, вернуть несколько серий невозможно. iterrows, кажется, трюк. Но код ниже дает мне пустой фрейм данных ...

def duplicator(series):
    if type(series['location']) == list:
        for location in series['location']:
            subSeries = series
            subSeries['location'] = location
            dfOut.append(subSeries)
    else:
        dfOut.append(series)

for index, row in dfIn.iterrows():
    duplicator(row)

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

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