This is my code (creating wide data from long data):
import pandas as pd
import numpy as np
#Create a DataFrame
d = {
    'countries':['A','B','C','A','B','C'],
    'metrics':['population_in_million','population_in_million','population_in_million',
                             'gdp_percapita','gdp_percapita','gdp_percapita'],
    'values1':[100,200,300,400,500,600],
    'values2':[101,202,303,404,505,606]
    }
df = pd.DataFrame(d,columns=['countries','metrics','values1', 'values2'])
df
df2=df.pivot(index='countries', columns='metrics')
After running code above df2 looks like:
None       values1             values1                     values2             values2
metrics   gdp_percapita   population_in_million   gdp_percapita   population_in_million
A           400                  100                            404                  101
B           500                  200                            505                  202
C           600                  300                            606                  303
How to make df2 to look like:
metrics   values1_gdp_percapita     values1_population_in_million     values2_gdp_percapita     values2_population_in_million
A           400                                100                                           404                               101
B           500                                200                                           505                               202
C           600                                300                                           606                               303
Answer from (Question 11): https://stackoverflow.com/a/47152692/1601703
import pandas as pd
import numpy as np
#Create a DataFrame
d = {
    'countries':['A','B','C','A','B','C'],
    'metrics':['population_in_million','population_in_million','population_in_million',
                             'gdp_percapita','gdp_percapita','gdp_percapita'],
    'values1':[100,200,300,400,500,600],
    'values2':[101,202,303,404,505,606]
    }
df = pd.DataFrame(d,columns=['countries','metrics','values1', 'values2'])
df
df2=df.pivot(index='countries', columns='metrics')
df2.columns = df2.columns.map('_'.join)
