首页 > 解决方案 > Pandas .p​​ivot_table() 按时间顺序重新排序索引

问题描述

我试图从 seaborn 航班数据集中创建一个数据透视表。当我为热图制作数据透视表时,索引列按字母顺序排序,而我想从一月到十二月按时间顺序排序。有谁知道该怎么做?当我从 Jupyter 笔记本复制和粘贴时,我删除了数据透视表中的值,使其看起来更整洁。

import pandas as pd
import seaborn as sns

#Loading dataset
flights = sns.load_dataset('flights')

#Calling dataset
flights

year    month   passengers
0   1949    January 112
1   1949    February    118
2   1949    March   132
3   1949    April   129
4   1949    May 121
... ... ... ...
139 1960    August  606
140 1960    September   508
141 1960    October 461
142 1960    November    390
143 1960    December    432

flights.pivot_table(values='passengers',index='month',columns='year')

year 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960
month                                               
April   Values.....
August  
December    
February    
January 
July    
June    
March   
May 
November    
October 
September   

标签: pythonpandasdataframepivot-tableseaborn

解决方案


一种方法是重新索引并提供索引列表,如下所示:

代码 :

import  calendar

month_names = [calendar.month_name[i] for i in range(1,13)]
# ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']

newdf = df.reindex(month_names)

推荐阅读