Pandas透视表-将月份索引设置为按时间顺序,而不是按字母顺序

Pandas透视表-将月份索引设置为按时间顺序,而不是按字母顺序,pandas,pivot-table,seaborn,Pandas,Pivot Table,Seaborn,我正在尝试使用seaborn制作热图,y轴为月份。但是,我看到,如果在创建透视表之后调用calendar.head(),透视表中的月份列将按字母顺序排列,而不是按csv文件中的时间顺序排列。有没有办法阻止熊猫按字母顺序排列,或者重新按时间顺序排列呢 import seaborn as sns df = pd.read_csv("C:/Users/Paul/Desktop/calendar.csv") calendar = df.pivot("Month", "Year", "hPM2.5")

我正在尝试使用seaborn制作热图,y轴为月份。但是,我看到,如果在创建透视表之后调用calendar.head(),透视表中的月份列将按字母顺序排列,而不是按csv文件中的时间顺序排列。有没有办法阻止熊猫按字母顺序排列,或者重新按时间顺序排列呢

import seaborn as sns

df = pd.read_csv("C:/Users/Paul/Desktop/calendar.csv")

calendar = df.pivot("Month", "Year", "hPM2.5")

ax = sns.heatmap(calendar, annot=True, fmt="d")

假设您将一年中的月份存储在一个列表中(按顺序),如下所示:

这些字符串与透视表中表示月份的字符串相同

然后,您可以通过使用正确排序的
months
列表切换其索引,简单地使用数据透视表,如下所示:

calendar = calendar.reindex(months)

您的数据透视表现在将正确排序

现在不确定您将使用哪种格式,但您应该首先强制转换“月到日期”对象。熊猫看到的是字符串,所以按字母顺序排列。非常感谢。我真的需要解决这个问题,而你刚刚结束了对我几个小时的折磨。
calendar = calendar.reindex(months)