Iterar linhas e expandir o dataframe do pandas
Eu tenho o panda dataframe com uma coluna contendo valores ou listas de valores (de comprimento desigual). Eu quero 'expandir' as linhas, para que cada valor na lista se torne um valor único na coluna. Um exemplo diz tudo:
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
Eu quero me transformar em:
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
Tentei usar o apply pela primeira vez, mas não é possível retornar várias séries até onde sei. o seguinte parece ser o truque. Mas o código abaixo me fornece um quadro de dados vazio ...
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)