0

I have a dataframe 'data':

Name  Computer  Data
Joe       MAC     10
Joe       HP       5
Jackson   MAC     20
Jackson   HP      15

I want to use the Computer names as column headers in a new df:

Name     MAC       HP
Joe       10       5
Jackson   20      15   

There are duplicate values so that may be an issue

data = pd.DataFrame({'Name':['Joe','Joe','Jackson','Jackson'],'Computer':['MAC','HP','MAC','HP'],'Data':[10,5,20,15]})

EDIT: I tried the reshapes on the trivial example and it works. However it doesn't work on my actual data since it's complaining about duplicates. I will have to dig deeper

2 Answers2

1

You can achieve it with pandas.pivot:

import pandas as pd

data = [["Joe", "MAC", 10],
        ["Joe", "HP", 5],
        ["Jackson", "MAC", 20],
        ["Jackson", "HP", 15]]

df = pd.DataFrame(data, columns=['Name','Computer','Data'])
df.pivot(index='Name', columns='Computer', values='Data')

results

0

Two ways you can do this -

Using data.pivot()

data.pivot(index='Name', columns='Computer', values='Data')
Computer  HP  MAC
Name             
Jackson   15   20
Joe        5   10

Using data.unstack() on the last index after setting both columns as index with data.set_index()

data.set_index(['Name','Computer']).unstack(-1)
         Data    
Computer   HP MAC
Name             
Jackson    15  20
Joe         5  10
Akshay Sehgal
  • 18,741
  • 3
  • 21
  • 51