Перебирайте строки и расширяйте информационный фрейм панд
У меня есть 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)