Iterar sobre filas y expandir el marco de datos de pandas

Tengo un marco de datos de pandas con una columna que contiene valores o listas de valores (de longitud desigual). Quiero 'expandir' las filas, para que cada valor de la lista se convierta en un valor único en la columna. Un ejemplo lo dice todo:

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

Quiero convertirme en:

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

Primero intenté usar apply pero no es posible devolver varias Series hasta donde yo sé. iterrows parece ser el truco. Pero el siguiente código me da un marco de datos vacío ...

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)

Respuestas a la pregunta(2)

Su respuesta a la pregunta