You can use stack, reset_index and rename column 0
:
print df.set_index(['Name', 'Percent']).stack().reset_index(level=[0,1])
.reset_index(drop=True).rename(columns={0:'Subject'})
Name Percent Subject
0 ramesh 85 Maths
1 ramesh 85 Science
2 ram 42 Maths
3 Raj 85 Science