Этот вопрос является расширением этого вопроса Панды: разделить список в столбце на несколько строк , теперь на этот раз я не хочу объединять больше фреймов данных.И я не мог заставить его работать с более чем 2 dfs.
У меня есть этот DataFrame:
Index Job positions Job types Locations
0 [5] [6] [3, 4, 5]
1 [1] [2, 6] [3, NaN]
2 [1,3] [9, 43] [1]
Я хотел бы каждую комбинацию чисел, так что окончательный результат будет:
index Job position Job type Location
0 5 6 3
0 5 6 4
0 5 6 5
1 1 2 3
1 1 2 NaN
1 1 6 3
1 1 6 NaN
2 1 9 1
2 1 43 1
2 3 9 1
2 3 43 1
Итак, я сделал, чтобы преобразовать столбцы в Серии:
positions = df['Job positions'].apply(pd.Series).reset_index().melt(id_vars='index').dropna()[['index', 'value']].set_index('index')
types = df['Job types'].apply(pd.Series).reset_index().melt(id_vars='index').dropna()[['index', 'value']].set_index('index')
locations = df['Locations'].apply(pd.Series).reset_index().melt(id_vars='index').dropna()[['index', 'value']].set_index('index')
dfs = [positions, types, locations]
И затем попытался объединить их следующим образом:
df_final = reduce(lambda left,right: pd.merge(left,right,left_index=True, right_index=True, how="left"), dfs)
Но кажется, что пропускает поля с NaN - как мне это предотвратить?