George
George

Reputation: 161

Changing dataframe values as columns - columns - as index

meet the problem of changing values and columns names,

for example i have such Pandas dataframe:

       Value  2013  2014 Company Name
1  Employees    10    12     Aviators
2  Computers    20     2     Aviators
3  Employees     4    13       Mouses
4  Computers     1     8       Mouses
5   Monitors     5     1       Mouses

and i need to make values as colums and years as values or indexes (values better) smth like this:

      Employees  Computers  Monitors Company name
2013         10         20       NaN     Aviators
2014         12          2       NaN     Aviators
2013          4          1       5.0       Mouses
2014         13          8       1.0       Mouses

So i need only change years and values, company Name column should be placed like on the sample

What's the easiest way to do it?

Upvotes: 0

Views: 48

Answers (1)

Erfan
Erfan

Reputation: 42916

Using pivot_table with stack:

df = df.pivot_table(index=['Company Name'], 
                    columns='Value',
                    aggfunc='sum').stack(level=0).reset_index(level=0)

Value Company Name  Computers  Employees  Monitors
2013      Aviators       20.0       10.0       NaN
2014      Aviators        2.0       12.0       NaN
2013        Mouses        1.0        4.0       5.0
2014        Mouses        8.0       13.0       1.0

To remove the column index name, use rename_axis:

df = df.rename_axis(None, axis='columns')

     Company Name  Computers  Employees  Monitors
2013     Aviators       20.0       10.0       NaN
2014     Aviators        2.0       12.0       NaN
2013       Mouses        1.0        4.0       5.0
2014       Mouses        8.0       13.0       1.0

Upvotes: 2

Related Questions