A = np.asarray(df.A.values.tolist())
B = np.stack([df.B for _ in range(A.shape[1])]).T
P = np.stack([A, B])
pd.Panel(P, items=['A', 'B']).to_frame().reset_index(drop=True)
Как сделать «взрыв сбоку ()» в пандах