0

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)
vasili111
  • 6,032
  • 10
  • 50
  • 80

0 Answers0