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)