nick
nick

Reputation: 149

Reshaping dataframe with multiple columns to row groups

inp Dataframe

df = pd.DataFrame({'Loc': ['Hyd', 'Hyd','Bang','Bang'],
               'Item': ['A', 'B', 'A', 'B'],
               'Month' : ['May','May','June','June'],
               'Sales': [100, 100, 200, 200],
                'Values': [1000, 1000, 2000, 2000]
               })

My expected output

df = pd.DataFrame({'Loc': ['Hyd', 'Hyd','Hyd','Hyd','Bang','Bang','Bang','Bang'],
               'Item': ['A', 'A', 'B', 'B','A', 'A', 'B', 'B'],
               'VAR' : ['Sales','Values','Sales','Values','Sales','Values','Sales','Values'],
               'May': [100, 1000, 100, 1000, 100, 1000, 100, 1000],
                'June': [200, 2000, 200, 2000, 200, 2000, 200, 2000]
               })

I have tried multiple solutions using melt and pivot but nothing seems to work ? not sure where I am missing ?

Here's my code

    dem.melt(['Part','IBU','Date1']).pivot_table(index=['Part','IBU','variable'],columns=['Date1'])

Any help would be much appreciated

Upvotes: 3

Views: 46

Answers (1)

Mo'men Ahmed
Mo'men Ahmed

Reputation: 61

You can use melt and pivot functions in pandas:

df_melted = pd.melt(df, id_vars=["Loc", "Item", "Month"], value_vars=["Sales", "Values"])

This will result:

enter image description here

And then:

df_pivot = df_melted.pivot_table(index=["Loc", "Item", "variable"], columns="Month")

So, the final output will be:

enter image description here

Upvotes: 1

Related Questions