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

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
  • 15,950
  • 2
  • 19
  • 40
0

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