df.set_index('Subject', inplace=True)
df.columns = df.columns.str.split('-', expand=True)
df.stack(level=0).rename_axis(['Subject', 'Test']).reset_index()
Python Pandas Wide to Long Format Change with Column Titles Spliting