olivier dadoun
olivier dadoun

Reputation: 743

keep order while using python pandas pivot

df = {'Region':['France','France','France','France'],'total':[1,2,3,4],'date':['12/30/19','12/31/19','01/01/20','01/02/20']}
df=pd.DataFrame.from_dict(df)
print(df)
  Region  total      date
0  France      1  12/30/19
1  France      2  12/31/19
2  France      3  01/01/20
3  France      4  01/02/20

The dates are ordered. Now if I am using pivot

pandas_temp   = df.pivot(index='Region',values='total', columns='date')
print(pandas_temp)
date    01/01/20  01/02/20  12/30/19  12/31/19
Region                                        
France         3         4         1         2

I am losing the order. How can I keep it ?

Upvotes: 1

Views: 90

Answers (1)

jezrael
jezrael

Reputation: 862511

Convert values to datetimes before pivot and then if necessary convert to your custom format:

df['date'] = pd.to_datetime(df['date'])
pandas_temp  = df.pivot(index='Region',values='total', columns='date')

pandas_temp = pandas_temp.rename(columns=lambda x: x.strftime('%m/%d/%y'))
#alternative
#pandas_temp.columns = pandas_temp.columns.strftime('%m/%d/%y')
print (pandas_temp)
date    12/30/19  12/31/19  01/01/20  01/02/20
Region                                        
France         1         2         3         4

Upvotes: 1

Related Questions