df = df.set_index(['a', 'b'])
df = df.astype(str) + '| '
df = df.c.str.split('|', expand=True).stack().reset_index(-1, drop=True
    ).replace(' ', np.nan).dropna().reset_index()
Как разложить ячейки в DataFrame, используя pandas и python?