df.columns = df.columns.str.split('_', expand=True)
df = df.stack()
df_result = pd.DataFrame(OrderedDict({'year': df.index.get_level_values(1),
    'value': df['value'].astype(int).values}))
print(df_result)
how to gather DataFrame column into key value pairs as row in python